Oracle에서 저장 프로시저를 디버깅하는 방법

PHPz
풀어 주다: 2023-04-25 17:20:00
원래의
5399명이 탐색했습니다.

Oracle 데이터베이스는 주요 기업에서 널리 사용되는 관계형 데이터베이스 관리 시스템으로, 강력한 기능과 안정성으로 사람들이 선호합니다. 실제 개발 과정에서 개발자는 다양한 비즈니스 로직을 구현하기 위해 저장 프로시저를 작성해야 하는 경우가 많으며 저장 프로시저를 디버깅할 때 몇 가지 문제에 직면할 수 있습니다.

이 글에서는 Oracle 데이터베이스의 저장 프로시저를 디버깅하는 방법을 소개합니다.

1. SQL Developer를 사용하여 저장 프로시저 디버깅

SQL Developer는 Oracle에서 공식적으로 제공하는 무료 데이터베이스 개발 도구로, PL/SQL 저장 프로시저, 함수, 트리거 등을 디버깅하는 데 사용할 수 있는 강력한 디버거를 제공합니다. 아래에서는 SQL Developer를 사용하여 저장 프로시저를 디버깅하는 방법을 보여주기 위해 간단한 저장 프로시저를 예로 들어 보겠습니다.

1. 저장 프로시저 만들기

먼저 간단한 저장 프로시저를 만들어야 합니다.

CREATE OR REPLACE PROCEDURE my_proc (p_input IN NUMBER, p_output OUT NUMBER) AS
BEGIN
p_output := p_input * 2;
END ;

이 저장 프로시저는 입력 매개변수 p_input을 수신하고 이를 2를 곱하여 출력 매개변수 p_output에 할당합니다. 실제 시나리오에서는 저장 프로시저가 더 복잡하지만 이 문서에 설명된 디버깅 방법은 복잡한 저장 프로시저에도 적용할 수 있습니다.

2. 중단점 설정

다음으로 프로그램 흐름을 일시 중지하고 실행 중에 변수 값을 확인하기 위해 저장 프로시저에 중단점을 설정해야 합니다. SQL Developer에서 중단점을 설정하는 방법은 매우 간단합니다. 저장 프로시저의 코드에서 중단점을 설정하려는 줄을 선택한 다음 줄 번호 옆의 빈 영역을 클릭하기만 하면 됩니다. 아래 그림과 같이 3번째 줄에 중단점을 설정했습니다.

3. 저장 프로시저 실행

이제 SQL Developer에서 저장 프로시저를 실행하고 실행 프로세스 중에 프로그램 흐름을 일시 중지하여 변수 값을 확인할 수 있습니다. 다음 코드를 사용하여 저장 프로시저를 실행하고 매개변수 값을 전달할 수 있습니다:

DECLARE
v_input NUMBER := 10;
v_output NUMBER;
BEGIN
my_proc(v_input, v_output);
END;

이 코드를 실행한 후 , SQL Developer는 아래 그림과 같이 자동으로 디버거를 열고 3행에서 프로그램을 일시 중지합니다. v_input의 값이 10이고 단계별 실행 중에 p_output의 값도 20으로 할당되는 것을 볼 수 있습니다.

4. 변수 값 확인

프로그램이 일시 정지된 동안 각 변수의 값을 확인할 수 있습니다. 코드에서 해당 이름을 클릭하거나 모니터 창을 사용하여 변수 값을 볼 수 있습니다. SQL Developer에서는 디버그 > Windows 디버깅 > 감시 메뉴를 선택하고 모니터 창에서 변수를 추가하면 여러 변수의 값을 동시에 볼 수 있습니다.

아래 그림과 같이 모니터 창에 v_input, v_output, p_output을 추가했는데 그 값이 각각 10, 0, 0인 것을 볼 수 있습니다.

다음으로, 디버거 창 상단에 있는 "계속 실행" 버튼을 클릭하여 다음 중단점이나 프로그램이 끝날 때까지 프로그램이 계속 실행되도록 할 수 있습니다.

2. DBMS_DEBUG 패키지를 사용하여 저장 프로시저 디버깅

SQL Developer 도구가 없으면 Oracle에서 제공하는 DBMS_DEBUG 패키지를 사용하여 저장 프로시저를 디버깅할 수도 있습니다. 아래에서는 DBMS_DEBUG 패키지 사용법을 소개하겠습니다.

DBMS_DEBUG 패키지는 Oracle Database에서 제공하는 도구 패키지로, 이를 통해 저장 프로시저에 중단점을 설정하고, 프로그램 실행 프로세스를 일시 중지하고, 프로그램 변수의 값을 확인할 수 있습니다. DBMS_DEBUG 패키지를 사용하여 저장 프로시저를 디버깅하려면 다음 단계가 필요합니다.

1. 컴파일 옵션 설정

먼저 DBMS_DEBUG 패키지를 사용할 수 있도록 저장 프로시저에서 컴파일 옵션을 설정해야 합니다. 저장 프로시저의 코드 앞에 다음 문을 추가합니다.

ALTER SESSION SET PLSQL_DEBUG=TRUE;

2. 디버거 시작

다음으로 저장 프로시저에서 디버거를 시작해야 합니다. 저장 프로시저에 다음 코드를 추가합니다.

DBMS_DEBUG_DBMS_DEBUG.CONNECT_SESSION;

이 코드는 디버거를 시작하고 클라이언트가 연결될 때까지 기다립니다.

3. 클라이언트 연결

이제 클라이언트의 데이터베이스에 연결하고 방금 시작한 디버거에 연결해야 합니다. SQL Plus에서는 다음 명령을 사용하여 연결할 수 있습니다.

EXEC DBMS_DEBUG_JDWP.CONNECT_TCP('localhost',4000);

연결에 성공하면 "connected"라는 메시지가 표시됩니다.

4. 중단점 설정

클라이언트 연결이 성공한 후 저장 프로시저에 중단점을 설정할 수 있습니다. 다음 코드를 사용하여 저장 프로시저에 중단점을 설정합니다.

DBMS_DEBUG_JDWP.BREAKPOINT('my_proc',4);

이 명령은 저장 프로시저의 라인 4에 중단점을 설정합니다. my_proc는 저장 프로시저의 이름입니다.

5. 저장 프로시저 실행

이제 저장 프로시저를 실행하고 실행 중에 프로그램을 일시 중지하여 변수 값을 확인할 수 있습니다.

SQL Plus에서 다음 코드를 실행합니다.

DECLARE
v_input NUMBER := 10;
v_output NUMBER;
BEGIN
my_proc(v_input, v_output);
END;

디버거가 올바르게 설정되면 프로그램은 4단계에서 종료됩니다. 회선이 일시 중지됩니다. 일시 중지된 상태에서 다음 명령을 사용하여 변수 값을 확인할 수 있습니다:

DBMS_DEBUG_JDWP.PRINT_VARIABLE('v_input');
DBMS_DEBUG_JDWP.PRINT_VARIABLE('v_output');

이 두 명령은 값을 표시할 수 있습니다. 변수 v_input 및 v_output 중.

6. 계속 실행

변수 값을 확인한 후에도 프로그램을 계속 실행해야 하는 경우 다음 명령을 사용할 수 있습니다.

DBMS_DEBUG_JDWP.CONTINUE

이 명령은 다음 중단점이나 종료될 때까지 프로그램 실행을 계속합니다. 프로그램.

요약

Oracle 데이터베이스에서 저장 프로시저 디버깅은 비교적 일반적인 작업입니다. 이 문서에서는 SQL Developer 및 DBMS_DEBUG 패키지를 사용하여 저장 프로시저를 디버깅하는 두 가지 방법을 소개합니다. 어떤 방법을 사용하든 쉽게 저장 프로시저에 중단점을 설정하고, 프로그램 실행을 일시 중지하고, 변수 값을 확인할 수 있어 개발자가 신속하게 문제를 찾아 버그를 수정할 수 있습니다.

위 내용은 Oracle에서 저장 프로시저를 디버깅하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿