Oracle PL/SQL: 스택 트레이스, 패키지 이름 및 프로시저 이름을 가져오는 방법
예외는 "ORA-06502: PL/SQL: 숫자 또는 값 오류: 문자열 버퍼가 너무 작음"과 같은 결과를 반환할 수 있습니다.
표, 열 및 쓰려고 한 값이 모두 보고되지 않기 때문에 읽을 수 없습니다.
예외가 발생했거나 캐치된 시점에서 현재 프로시저 이름을 취득하는 것이 편리합니다.
저는 그것을 어떻게 얻을 수 있을까요?
아마 기능을 원할 것이다.
SQL> ed
Wrote file afiedt.buf
1 create or replace procedure p1
2 is
3 begin
4 raise_application_error( -20001, 'Error 1', true );
5* end;
SQL> /
Procedure created.
SQL> create or replace procedure p2
2 as
3 begin
4 null;
5 p1;
6 end;
7 /
Procedure created.
SQL> begin
2 p2;
3 exception
4 when others then
5 dbms_output.put_line( dbms_utility.format_error_backtrace );
6 end;
7 /
ORA-06512: at "SCOTT.P1", line 4
ORA-06512: at "SCOTT.P2", line 5
ORA-06512: at
line 2
PL/SQL procedure successfully completed.
DBMS_UTILITY를 조합하여 사용합니다.FORMAT_ERROR_STACK 및 DBMS_UTILITY.FORMAT_ERROR_BACKTRACE.(Justin Cave의 답변 개선)
when others then
Dbms_Output.put_line ( DBMS_UTILITY.FORMAT_ERROR_STACK() );
Dbms_Output.put_line ( DBMS_UTILITY.FORMAT_ERROR_BACKTRACE() );
그러면 첫 번째 줄과 다음 줄의 스택에 오류가 표시됩니다(Justin Cave가 제시한 예에서 출력).
ORA-20001: Error 1
ORA-06512: at "SCOTT.X1", line 4
ORA-06512: at "SCOTT.X2", line 5
ORA-06512: at line 2
또는 시도하다
또는 를 사용할 수 있습니다.
언급URL : https://stackoverflow.com/questions/7032373/oracle-pl-sql-how-to-get-the-stack-trace-package-name-and-procedure-name
'programing' 카테고리의 다른 글
POST(ajax)를 통해 JSON 데이터를 전송하고 컨트롤러(MVC)로부터 json 응답을 수신합니다. (0) | 2023.02.26 |
---|---|
리액트 라우터의 루트 천이에 대한 응답으로 Redx 액션을 기동하다 (0) | 2023.02.26 |
JSON 객체 배열의 첫 번째 요소에 액세스하는 방법 (0) | 2023.02.26 |
WooCommerce 카트에서 배송을 제거하려면 어떻게 해야 합니까? (0) | 2023.02.26 |
Cordova 5.0 + cordova-android@4.0으로 업그레이드한 후 Ajax 요청이 실패함 (0) | 2023.02.26 |