source

Oracle 데이터베이스의 모든 저장 프로시저를 나열하려면 어떤 SQL을 사용해야 합니까?

manycodes 2023. 7. 10. 22:32
반응형

Oracle 데이터베이스의 모든 저장 프로시저를 나열하려면 어떤 SQL을 사용해야 합니까?

Oracle 데이터베이스의 모든 저장 프로시저를 나열하려면 어떤 SQL을 사용해야 합니까?

가능하다면 두 가지 질문을 받고 싶습니다.

  1. 이름별로 모든 저장 프로시저 나열
  2. 이름이 지정된 저장 프로시저의 코드 나열

DBA_OBJECTS보기에는 절차(거의 다른 개체)가 나열됩니다.

SELECT owner, object_name
FROM dba_objects 
WHERE object_type = 'PROCEDURE'

DBA_SOURCEview는 문제의 프로시저에 대한 소스 코드 행을 나열합니다.

SELECT line, text
FROM dba_source
WHERE owner = ?
  AND name = ?
  AND type = 'PROCEDURE'
ORDER BY line

참고: 권한에 따라 다음을 쿼리하지 못할 수도 있습니다.DBA_OBJECTS그리고.DBA_SOURCE보기. 이 경우, 사용할 수 있습니다.ALL_OBJECTS그리고.ALL_SOURCE대신.DBA_보기는 데이터베이스의 모든 개체를 포함하는 반면,ALL_보기에는 액세스할 수 있는 개체만 포함됩니다.

여기 더 간단한 SQL이 있습니다.SELECT * FROM User_Procedures;

저장 프로시저(매개 변수 등)를 검사하기 위해 모든 호출을 수행하려면 다음 오픈 소스 패키지에서 해당 호출을 꺼낼 수 있습니다.

http://code.google.com/p/orapig

Oracle PIG는 Oracle Python Interface Generator입니다.오라클 패키지를 검사하고 이를 위한 파이썬 래퍼를 생성합니다.

DBA_OBJECTS에서 열거하는 것은 많은 절차를 생략했을 수 있습니다. (Oracle 12c에 있습니다. SYS로 로그인합니다.)

select count(*) from dba_objects where object_type = 'PROCEDURE';
       202

전체 Oracle 데이터베이스가 202개의 절차만 가질 수 있다는 것은 정말 불가능해 보였습니다.

DBA_PROCEDURES에서 쿼리하는 중:

select owner||'-'||object_name || '-'||procedure_name from
dba_procedures WHERE PROCEDURE_NAME IS NOT NULL;

26539 rows selected.

이제 모든 데이터베이스에 대해 기본값으로 제공되는 SYS 스키마에 초점을 맞춥니다(내 데이터베이스에만 해당되지 않음).

익명 저장 프로시저 쿼리(http://www.praetoriate.com/t_high_perform_calling_procedures.htm) 가 SYS에 속함:

select owner||'-'||object_name || '-'||procedure_name from dba_procedures WHERE PROCEDURE_NAME IS NULL and owner = 'SYS';
994 rows selected.

또한 SYS의 익명 저장 프로시저에는 15K가 있습니다.

select owner||'-'||object_name || '-'||procedure_name from dba_procedures WHERE PROCEDURE_NAME IS NOT NULL and owner = 'SYS';
15408 rows

연결된 데이터베이스의 모든 저장 프로시저를 나열하려면 다음을 실행하기만 하면 됩니다.

select object_name from user_procedures;

언급URL : https://stackoverflow.com/questions/955927/what-sql-would-i-need-to-use-to-list-all-the-stored-procedures-on-an-oracle-data

반응형