programing

패키지에 절차가 있는지 확인하려면 어떻게 해야 합니까?

telecom 2023. 10. 12. 21:49
반응형

패키지에 절차가 있는지 확인하려면 어떻게 해야 합니까?

저는 여러 곳에서 사용되는 절차가 포함된 패키지를 가지고 있고 어떤 곳에서는 열을 하나 더 업데이트하는 등 약간 다른 절차가 필요합니다.

저는 모든 절차가 아닌 일부 절차가 포함된 추가 패키지를 만들 수 있다고 생각했습니다.

저희 집에 와서 확인할 방법이 없을까요?if추가 패키지에 절차가 존재하지 않는다면 표준 패키지를 다시 사용할 수 있다는 것을 스크립트로 직접 설명합니다.

DBA_Procedures 보기에서 다음 정보를 얻을 수 있습니다.

SELECT *
  FROM SYS.DBA_PROCEDURES
  WHERE OBJECT_TYPE = 'PACKAGE' AND
        OBJECT_NAME = '<your package name>' AND
        PROCEDURE_NAME = '<your procedure name>'

이것이 행을 반환하는 경우 관심 있는 절차가 패키지에 있습니다.NO_DA를 받으시면TA_FOUND 예외는 패키지에 절차가 존재하지 않음을 의미합니다.

나누어서 즐겨요.

SYS를 조회하는 사용자가 아닌가요?DBA_Procedure에 특별한 권한이 필요합니까?아마 SYS를 조회할 겁니다.사용자_개체에 더 적은 권한이 필요합니까?

select * from SYS.User_Objects where object_type = 'PACKAGE';

시도해 볼 수도.

SELECT text FROM all_source WHERE name = 'PACKAGE' ORDER BY line;

저를 위해 일했죠

코드를 정상 사용자로 실행하는 경우 SYS가 표시되지 않습니다.DBA_Procedure(절차)

그러나 사용자가 액세스할 수 있는 테이블에서 동일한 작업을 수행할 수 있습니다.user_procedures:

SELECT * 
  FROM USER_PROCEDURES 
  WHERE OBJECT_TYPE='PACKAGE' AND 
        OBJECT_NAME ='<your package name>' AND 
        PROCEDURE_NAME = '<your procedure name>';
select * from USER_OBJECT where object_type='PACKAGE' AND OBJECT_NAME ='<YOUR PACKAGE NAME>'

언급URL : https://stackoverflow.com/questions/11436432/how-can-i-check-if-a-procedure-exists-in-a-package

반응형