저장 프로시저가 있는지 확인하는 방법은 무엇입니까?
인터넷을 검색해보니 저장 프로시저가 있는지 확인하기 위해 다음 스니펫을 사용하는 게시물이 있습니다.
select *
from USER_SOURCE
where type='PROCEDURE'
and name='my_stored_procedure.'
절차가 있는지 확인할 수 있는 다른 방법이 있습니까?
추가할 편집 내용:
SQL Server ways를 게시하기 전에 Oracle ways를 찾고 있습니다.
대안:
사용자_절차:
SELECT *
FROM USER_PROCEDURES
WHERE object_name = 'MY_STORED_PROCEDURE'
사용자_객체:
SELECT *
FROM USER_OBJECTS
WHERE object_type = 'PROCEDURE'
AND object_name = 'MY_STORED_PROCEDURE'
내게 효과가 있었던 것!
SELECT text
FROM all_source
WHERE name = 'MY_SP_NAME'
ORDER BY line;
또는 SP를 다음과 같이 호출할 수 있습니다.
CALL MY_SP_NAME();
다음과 같은 오류가 발생할 수 있지만 SP가 정의되어 있음을 확인할 수 있습니다.
OCI Statement Execution failure.ORA-06553: PLS-306: wrong number or types of arguments in call to 'MY_SP_NAME'
데이터베이스에 절차가 있는지 확인하는 유일한 방법은 쿼리하는 것입니다.DBA_OBJECTS
여기서 단점은 DBA만 이 보기에 액세스할 수 있다는 것입니다.두 번째로 좋은 것은 all_objects를 사용하는 것입니다.ALL_OBJECTS
에는 사용자에게 권한이 있는 개체가 표시됩니다.USER_OBJECTS
사용자 자신의 개체만 표시합니다.
SQL*PLUS, ODBC 테스트에서 아래 쿼리를 실행합니다.
all_source WHERE name='에서 텍스트를 선택MY_PROCESS' 라인별 주문
여기서 MY_PROCEDure는 저장 프로시저 이름입니다.
다음은 샘플 출력입니다.
데이터 모두 가져오기: "TEXT" "PROCESSure Usp_Get_Blob"
"(
"P_DOC_ID INT,
"P_DOC_TEXT OUT BLOB)
"로서
"점심적인
p_doc_text에서 B1을 선택합니다.
처음부터
여기서 ID = p_doc_id;
"끝;"
위의 방법으로는 저장 프로시저를 찾을 수 없습니다.
이유: 저장 프로시저가 패키지 내부에 있습니다.Oracle은 패키지를 사용하여 하나의 모듈에 여러 저장 프로시저를 수집합니다.
이렇게 하면 저장 프로시저와 테이블에 저장된 해당 내용이 표시됩니다.
select
name c1,
text c2
from
dba_source
where
name = upper('procedure_name')
order by
line asc;
USER_SOURCE에서 *를 선택합니다. 여기서 ='를 입력합니다.PROCEDURE' 및 name='my_procedure_procedure'.
언급URL : https://stackoverflow.com/questions/5721474/how-to-check-if-a-stored-procedure-exist
'programing' 카테고리의 다른 글
CSS @font-face는 Firefox와 함께 작동하지 않지만 Chrome 및 IE와 함께 작동합니다. (0) | 2023.08.29 |
---|---|
<%=%> 식이 서버 프로세서의 속성 값으로 컴파일 오류를 일으키는 이유는 무엇입니까? (0) | 2023.08.29 |
'System'의 형식 이니셜라이저입니다.데이터. 엔티티.내부의.AppConfig'에서 예외를 발생시켰습니다. (0) | 2023.08.29 |
reduct()를 사용하는 유용한 코드는? (0) | 2023.08.29 |
Ajax 요청은 쿠키 전송이 보장됩니까? (0) | 2023.08.29 |