DB2 스토어드 프로시저
프로그램 준비
이 주제에서는 수집해야 하는 정보 및 Debug Tool로 디버깅하기 위해
DB2® 스토어드 프로시저를 준비하는 데
필요한 단계에 대해 설명합니다. Debug Tool은 PROGRAM TYPE이 MAIN 또는 SUB인 스토어드 프로시저를
디버그할 수 있습니다. 준비 단계도 동일합니다.
시작하기 전에 지원되는 디버그 모드를 사용할 수 있는지
확인하십시오. Debug Tool은 다음 디버그 모드 모두에서 어셈블러, C, C++, COBOL 및 Enterprise PL/I로 작성된 스토어드 프로시저를
디버그할 수 있습니다.
- 원격 디버그
- 전용 터미널을 통한 전체 화면 모드
- Batch
DB2 Application Programming and SQL Guide에서 『스토어드 프로시저 작성』 주제를 검토하여 스토어드 프로시저가 외부 스토어드 프로시저의 형식 및 제한을 준수하는지 확인하십시오. Debug Tool은 외부 스토어드 프로시저의 디버깅만을 지원합니다.
DB2 스토어드 프로시저를 준비하려면
다음 단계를 수행하십시오.
- DB2 시스템 관리자가 Debug Tool Customization Guide의
"DB2 스토어드 프로시저 디버깅을 위해 환경준비" 섹션에 설명된 태스크를 완료했는지 확인하십시오. DB2
시스템 관리자는 스토어드 프로시저가 실행되는 주소 공간을 정의하고 DB2
프로그램에 적절한 RACF® 읽기 권한을 부여하며
갱신사항이 제대로 반영되도록 주소 공간을 재활용해야 합니다.
- 디버그하려는 DB2스토어드 프로시저를 작성하는 데 사용된 매개변수에 친숙하지 않은 경우에는 다음 예제에 설명된 대로 SELECT문을 입력하여 이 정보를 구하십시오.
SELECT PROGRAM_TYPE,STAYRESIDENT,RUNOPTS,LANGUAGE
FROM SYSIBM.SYSROUTINES
WHERE NAME='name_of_DB2_stored_procedure';
- call_sub 함수에 의해 호출되지 않고 프로그램 유형이 SUB인 스토어드 프로시저의 경우
시스템 프로그래머 또는 DB2
시스템 관리자가 WLM 주소 공간을 정의할 때 NUMTCB의 값을 1로 설정하는지 확인하십시오. NUMTCB는
WLM 주소 공간에서 동시에 실행할 수 있는 TCB(Task Control Block)의 최대수를 지정합니다. 스토어드 프로시저가
시작되지 않은 TCB에서 실행되는 경우 스토어드 프로시저를 디버그할 수 없습니다.
NUMTCB의 값을 1로 설정하면 스토어드 프로시저가 다른 TCB에서 실행되지 않습니다.
- 스토어드 프로시저를 정의할 때 다음 항목을 확인하십시오.
- LANGUAGE 매개변수 및 PROGRAM
TYPE 매개변수에 올바른 값을 지정하십시오. C, C++, COBOL 또는 Enterprise PL/I의 경우 PROGRAM TYPE은 MAIN 또는 SUB일 수 있습니다.
어셈블러의 경우 PROGRAM TYPE은 MAIN이어야 합니다.
- call_sub 함수에 의해 호출되지 않은 SUB 프로그램 유형의 스토어드 프로시저의 경우 사용자가 디버깅 중인 스토어드 프로시저를 다른 사용자가 실행 중인지 여부를 판별하십시오. 다른 사용자가 스토어드 프로시저를 실행하고 있는 경우에는 이를 디버그할 수 없습니다.
- call_sub 함수에 의해 호출된 SUB 프로그램 유형의 스토어드 프로시저의 경우 다음 옵션을 검토하십시오.
- Language Environment EQADDCXT EXIT 루틴을 통해 TEST 런타임 옵션을 지정할 계획이면 STAY RESIDENT NO를 지정하십시오.
- DB2 카탈로그를 통해 TEST 런타임 옵션을 지정할 계획이면 STAY RESIDENT에 YES 또는 NO를 지정할 수 있습니다.
- 프로그램을 디버깅을 위한 프로그램 준비에 설명된 대로 컴파일하거나 어셈블하십시오. Enterprise PL/I 프로그램의 경우에는 RENT 컴파일러 옵션도 지정하십시오.
- 다음 목록을 검토하여 TEST 런타임 옵션을 어떻게 지정할지를 결정하십시오.
- MAIN 프로그램 유형의 스토어드 프로시저의 경우 Language Environment EQADDCXT EXIT 루틴 또는 DB2 카탈로그를 통해서 TEST 런타임 옵션을 지정할 수 있습니다. 두 메소드를 모두 사용하는 경우에는 Language Environment EQADDCXT EXIT 루틴이 DB2 카탈로그보다 우선합니다.
- call_sub 함수에 의해 호출된 SUB 프로그램 유형의 스토어드 프로시저의 경우 Language Environment EQADDCXT EXIT 루틴 또는 DB2 카탈로그를 통해 TEST 런타임 옵션을 지정할 수 있습니다. Language Environment EQADDCXT EXIT 루틴을 사용하기로 선택한 경우에는 스토어드 프로시저를 정의할 때 RUN OPTIONS 매개변수에 NOTEST 런타임 옵션을 지정해야 합니다.
- call_sub 함수에 의해 호출되지 않은 SUB 프로그램 유형의 스토어드 프로시저의 경우 CEETEST, __ctest() 또는 PLITEST 호출을 코딩하여 프로그램 내에서 또는 DB2 카탈로그를 통해서 TEST 런타임 옵션을 지정할 수 있습니다.
- Language Environment EQADDCXT EXIT 루틴을 통해 TEST 런타임 옵션을 지정하려면 Language Environment 사용자 EXIT을 통해 TEST 런타임 옵션
지정에 설명된 대로 EQADDCXT 사용자 EXIT의 사본을 준비하십시오.
call_sub 함수에 의해 호출된 SUB 프로그램 유형의 기존의 스토어드 프로시저를 디버그하려는 경우에는 스토어드 프로시저가 RUN OPTIONS 매개변수의 NOTEST 런타임 옵션을 사용할 수 있도록 스토어드 프로시저를 수정해야 합니다. 다음 예제는 ALTER PROCEDURE문을 사용하여 이와 같이 수정하는 방법을 보여줍니다.
ALTER PROCEDURE name_of_DB2_stored_procedure RUN OPTIONS 'NOTEST';
- DB2 카탈로그를 통해 TEST 런타임 옵션을 지정하려면 다음 단계를 수행하십시오.
- 스토어드 프로시저를 작성하지 않은 경우에는 CREATE PROCEDURE문을 사용하여 스토어드 프로시저를 작성하십시오. 다음 예제를 가이드로 사용할 수 있습니다.
CREATE PROCEDURE SPROC1
LANGUAGE COBOL
EXTERNAL NAME SPROC1
PARAMETER STYLE GENERAL
WLM ENVIRONMENT WLMENV1
RUN OPTIONS 'TEST(,,,TCPIP&9.112.27.99%8001:*)'
PROGRAM TYPE SUB;
이 예제는 이름이 SPROC1이고, 프로그램 유형은 SUB이고, WLMENV1이라는 WLM 어드레스 스페이스에서 실행되고, 원격 디버그 모드에서 디버그되는 COBOL 프로그램의 스토어드 프로시저를 작성합니다.
-
기존 스토어드 프로시저를 수정해야 하는 경우에는 ALTER PROCEDURE문을 사용하십시오. 다음 예제를 가이드로 사용할 수 있습니다.
원격 디버거의 IP 주소가 9.112.27.99에서 9.112.27.21로 변경되었습니다. 스토어드 프로시저를 수정하려면 다음 명령문을 입력하십시오.
ALTER PROCEDURE name_of_DB2_stored_procedure
RUN OPTIONS 'TEST(,,,TCPIP&9.112.27.21%8001:*)';
- SELECT문을 입력하여 스토어드 프로시저가 올바르게 정의되었는지 확인하십시오. 예를 들어, 다음 SELECT문을 입력할 수 있습니다.
SELECT * FROM SYSIBM.SYSROUTINES;