2009-10-13 3 views
1

앱의 데이터베이스를 설정하는 SQL 스크립트가 거의 없습니다. 보기에 대한 참조가 거의없는 패키지를 만드는 스크립트는 거의 없으며 유사하게 패키지 참조가있는보기를 만드는 스크립트가 있습니다.패키지 및 뷰 만들기 간소화

이 두 스크립트를 분리하여 개별적으로 패키지 또는보기 만 작성하는 방법이 있습니까?

또는 이에 대한 대안.

+0

'순환 참조'텍스트를 추가하면 SO 색인에 추가되어 다른 사람들이이 좋은 질문과 답변을 찾을 수 있기를 기대합니다. –

답변

1

수동으로 참조 그래프를 계산 한 다음 이에 따라 스크립트 실행을 순서대로 정렬해야한다고 생각합니다.

view1.sql, views2.sql, ... 및 packages1.sql, packages2.sql 등의 스크립트 세트를 작성해야합니다. Views1.sql에는 패키지를 참조하지 않는보기 만 들어 있습니다. Packages1.sql에는보기를 참조하지 않는 패키지 만 들어 있습니다. Views2.sql에는 packages1.sql의 패키지를 참조하는보기 만 포함됩니다. Packages2.sql에는 views1.sql에서 뷰를 참조하는 패키지 만 들어 있습니다.

끝날 때까지 계속하십시오.

+0

@rics. +1. 회신 해 주셔서 감사합니다. 사실 나는 그 순서대로 스크립트를 호출하여 같은 일을하고있다. 그것을 다루는 더 좋은 방법이 있는지 알고 싶었습니다. – Viky

+0

동일한 뷰가 패키지의 다른 기능을 참조한 뷰를 참조하는 패키지가 있습니다. 이 아이디어가 효과가 있었는지 확실하지 않습니다. Spec을 먼저 컴파일 한 다음 패키지를 참조하는 뷰를 작성한 다음 Body를 컴파일합니다. 감사. –

3

당신은 먼저 참조 된 개체는 모든 패키지의 다음 사양, 시체를 생성, 아직 존재하지 않는 경우에도 뷰를 생성하는 구문

CREATE OR REPLACE FORCE VIEW 

를 사용하여 모든 뷰를 만들 수 있습니다.

지금 모든 유효하지 않은 객체를 컴파일 할 수 있습니다하거나 오라클이 알아서 패키지 사양을 만들

Ask Tom - "invalid objects"

4

먼저 (이 링크를 참조).

둘째, 뷰를 생성합니다. 뷰는 본문이 아니라 사양을 참조합니다.

셋째,보기를 참조하는 패키지 본문을 만듭니다.

+0

매력처럼 작동했습니다. DBA는 모든 DDL 컴파일을 마술처럼 선호하므로 무효 컴파일보다 낫습니다. 내가 처음 만났을 때 패키지의 함수를 참조하는 뷰가 있고 패키지의 다른 함수가 동일한 뷰를 참조했습니다. 검색 기준으로 순환 참조를 사용하는 동안 나를 찾아 왔습니다. –

관련 문제