앱의 데이터베이스를 설정하는 SQL 스크립트가 거의 없습니다. 보기에 대한 참조가 거의없는 패키지를 만드는 스크립트는 거의 없으며 유사하게 패키지 참조가있는보기를 만드는 스크립트가 있습니다.패키지 및 뷰 만들기 간소화
이 두 스크립트를 분리하여 개별적으로 패키지 또는보기 만 작성하는 방법이 있습니까?
또는 이에 대한 대안.
앱의 데이터베이스를 설정하는 SQL 스크립트가 거의 없습니다. 보기에 대한 참조가 거의없는 패키지를 만드는 스크립트는 거의 없으며 유사하게 패키지 참조가있는보기를 만드는 스크립트가 있습니다.패키지 및 뷰 만들기 간소화
이 두 스크립트를 분리하여 개별적으로 패키지 또는보기 만 작성하는 방법이 있습니까?
또는 이에 대한 대안.
수동으로 참조 그래프를 계산 한 다음 이에 따라 스크립트 실행을 순서대로 정렬해야한다고 생각합니다.
view1.sql, views2.sql, ... 및 packages1.sql, packages2.sql 등의 스크립트 세트를 작성해야합니다. Views1.sql에는 패키지를 참조하지 않는보기 만 들어 있습니다. Packages1.sql에는보기를 참조하지 않는 패키지 만 들어 있습니다. Views2.sql에는 packages1.sql의 패키지를 참조하는보기 만 포함됩니다. Packages2.sql에는 views1.sql에서 뷰를 참조하는 패키지 만 들어 있습니다.
끝날 때까지 계속하십시오.
@rics. +1. 회신 해 주셔서 감사합니다. 사실 나는 그 순서대로 스크립트를 호출하여 같은 일을하고있다. 그것을 다루는 더 좋은 방법이 있는지 알고 싶었습니다. – Viky
동일한 뷰가 패키지의 다른 기능을 참조한 뷰를 참조하는 패키지가 있습니다. 이 아이디어가 효과가 있었는지 확실하지 않습니다. Spec을 먼저 컴파일 한 다음 패키지를 참조하는 뷰를 작성한 다음 Body를 컴파일합니다. 감사. –
당신은 먼저 참조 된 개체는 모든 패키지의 다음 사양, 시체를 생성, 아직 존재하지 않는 경우에도 뷰를 생성하는 구문
CREATE OR REPLACE FORCE VIEW
를 사용하여 모든 뷰를 만들 수 있습니다.
지금 모든 유효하지 않은 객체를 컴파일 할 수 있습니다하거나 오라클이 알아서 패키지 사양을 만들먼저 (이 링크를 참조).
둘째, 뷰를 생성합니다. 뷰는 본문이 아니라 사양을 참조합니다.
셋째,보기를 참조하는 패키지 본문을 만듭니다.
매력처럼 작동했습니다. DBA는 모든 DDL 컴파일을 마술처럼 선호하므로 무효 컴파일보다 낫습니다. 내가 처음 만났을 때 패키지의 함수를 참조하는 뷰가 있고 패키지의 다른 함수가 동일한 뷰를 참조했습니다. 검색 기준으로 순환 참조를 사용하는 동안 나를 찾아 왔습니다. –
'순환 참조'텍스트를 추가하면 SO 색인에 추가되어 다른 사람들이이 좋은 질문과 답변을 찾을 수 있기를 기대합니다. –