2010-02-04 2 views
5

Oracle 10g 사용.Oracle 패키지의 개별 프로 시저 업데이트

개발 시스템의 델타 변경 사항을 무대 시스템에 적용하는 스크립트를 작성하고 있습니다.

스크립트에 전체 패키지 내용을 포함하지 않고 패키지 내의 개별 프로 시저를 수정하거나 삽입 할 수있는 방법이 있습니까? 나는 대답이 '아니오'라고 생각하지만, 변경 사항이 적을 때 수정 된 패키지의 전체 내용을 포함시켜야하기 때문에 꽤 추해 질 것이기 때문에 확신하고 싶었다.

+1

추한 것처럼 보이는 경우 패키지가 큰 크기 일 가능성이 있습니까? - 예 : 너무 많은 무관 한 절차와 기능이 "수퍼 패키지"에 번들로 묶여 있다면 논리 라인을 따라 별도의 패키지로 나누는 것이 좋습니다. –

답변

4

죄송하지만 귀하의 직감이 맞습니다. 변경 단위는 PACKAGE BODY입니다.

왜 그렇게 추한 지 잘 모릅니다. 확실히 패키지를위한 스크립트를 호출하는 것일뿐입니다.

2

아니요, 패키지 본체는 전체적으로 교체해야합니다. 단일 스크립트에 여러 패키지의 코드를 포함하는 대신, 패키지 스펙 당 파일을 작성하고 패키지 본문 당 파일을 작성합니다. 그런 다음 SQL Plus에서 필요한 패키지 변경 사항을 실행하기 위해 "메타 스크립트"를 작성할 수 있습니다.

+0

당신은이 개념을 더욱 더 파괴 할 수 있으며 패키지 헤더와 본문에서 프로 시저 당 파일을 가질 수 있습니다. 이러한 방식으로 "메타 스크립트"는 빌드시 필요한 조각들을 모을 수 있지만 소스 제어 시스템, 특히 대규모 프로 시저의 경우 변경 추적을보다 쉽게 ​​수행 할 수 있습니다. – ninesided

+0

패키지 본체의 스크립트를 별도의 파일에있는 각 패키지 본문 프로 시저가있는 여러 파일로 세분합니까? Eek. 내가 그것을 피할 수 있다고 생각해. diff가있는 단일 파일에서 변경 내용 추적이 더 쉽습니다. –

+0

아니, 아니, 아니, 나는 그런 뜻이 아니었다! 각 파일에는 ** complete ** 패키지 스펙 또는 본문이 포함되어 있습니다. –

0

동일한 문제가 발생했습니다. 자주 변경되는 프로 시저에 대해 별도의 패키지를 작성하기 만하면됩니다.

관련 문제