Oracle에서 패키지에 상태가 있는지 확인할 수 있는 방법이 있습니까?
Oracle에서 패키지에 상태 또는 상태 비저장 여부를 확인할 수 있는 방법이 있습니까?데이터 사전에 해당 정보가 포함된 보기가 없습니다.
"ORA-04068: 기존 패키지 문자열 상태가 폐기되었습니다" 오류는 다소 성가신 일입니다.패키지에서 패키지 변수를 제거하여 제거할 수 있습니다. 11g은 컴파일 시간 상수가 모두 포함된 변수가 있는 패키지를 상태 비저장으로 처리하는 기능을 도입했습니다.
저는 두 개의 세션을 가지고 하나로 패키지를 컴파일하고 다른 세션을 호출하여 예외가 발생하는지 확인할 수 있지만, 이 경우 패키지에서 프로시저를 호출해야 하므로 바람직하지 않을 수 있습니다.
잠재적으로 상태가 있을 수 있는 모든 패키지를 나열할 수 있는 것처럼 들립니다.
원하는 것은 전역 변수 또는 상수가 있는 패키지입니다.단일 패키지의 경우 검사를 통해 매우 간단합니다.그러나 스키마에서 모든 패키지를 보려면 PL/Scope를 사용할 수 있습니다.
먼저 스키마 소유자로 로그인하고 세션에서 PL/Scope를 켭니다.
alter session set plscope_settings='IDENTIFIERS:ALL';
그런 다음 모든 패키지 본문을 다시 컴파일합니다.
그런 다음 이 쿼리를 실행하여 패키지 수준에서 선언된 모든 변수와 상수를 찾습니다.
select object_name AS package,
type,
name AS variable_name
from user_identifiers
where object_type IN ('PACKAGE','PACKAGE BODY')
and usage = 'DECLARATION'
and type in ('VARIABLE','CONSTANT')
and usage_context_id in (
select usage_id
from user_identifiers
where type = 'PACKAGE'
);
저는 결과적인 패키지 목록이 당신의 목표가 될 것을 제안합니다.
11gR2에 있는 경우 상수는 더 이상 이 문제를 발생시키지 않으므로 대신 이 쿼리를 사용합니다.
select object_name AS package,
type,
name AS variable_name
from user_identifiers
where object_type IN ('PACKAGE','PACKAGE BODY')
and usage = 'DECLARATION'
and type = 'VARIABLE'
and usage_context_id in (
select usage_id
from user_identifiers
where type = 'PACKAGE'
);
언급URL : https://stackoverflow.com/questions/11042712/is-there-any-way-to-determine-if-a-package-has-state-in-oracle
'programing' 카테고리의 다른 글
| 리소스에서 비트맵을 설정하는 방법 (0) | 2023.08.02 |
|---|---|
| Android Studio는 ProGuard 매핑 파일을 어디에 저장합니까? (0) | 2023.08.02 |
| ASP.NET jQuery 오류:알 수 없는 웹 메서드 (0) | 2023.08.02 |
| ngOnInit와 ngAfterView의 차이점은 무엇입니까?Angular2의 시작? (0) | 2023.08.02 |
| Angular 애니메이션의 목적은 무엇입니까? (0) | 2023.08.02 |