2010-11-21 3 views
1

패키지 프로 시저에 RESTRICT_REFERENCES pragma (WNDS, WDPS, RNDS ...) 중 하나라도 플래그가 지정되었는지 프로그래밍 방식으로 확인할 수 있습니까? 내가 말할 수있는RESTRICT_REFERENCES pragma를 쿼리하는 중

+0

__execute__ __immediate__를 사용하여 pragma (WNDS라고 함) 플래그가 지정된 다른 프로 시저에서이 프로 시저를 호출하려고 시도 할 수 있으며 해당 프로 시저가 WNDS가 아닌 경우 오류가 발생합니다. 나는 그것이 과잉이라고 말한다. 더 나은 솔루션을 환영합니다! – milan

답변

0

수있는 유일한 방법은 패키지 소스 코드, 예를 조회하는 것입니다

select text from all_source 
where UPPER(text) like '%PRAGMA RESTRICT_REFERENCES%' 
and owner = :owner 
and name = :package_name 
and type = 'PACKAGE'; 

완전히 신뢰할 수 없습니다 프라 그마 정의가 여러 줄에 걸쳐 분할 또는이 경우 (이 그것을 선택하지 않습니다 여분의 공간 또는 무언가).

+0

패키지의 각 서브 프로그램 (기능 프로 시저)에 pragma가 지정되면 전혀 작동하지 않습니다. – milan

+0

@milan : 실제로이 쿼리가 제공 할 것입니다. 각 프로 시저 또는 함수에 대해 하나의 행입니다. 그런 다음 코딩 스타일이 얼마나 일관성이 있는지에 따라 원하는 경우 이름을 파싱 할 수 있습니다. –

관련 문제