Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Table of Contents
maxLevel2




개요

...

저장 프로시저 내용을 확인하는 방법에 대해 안내합니다. 



 

버전

...

ALTIBASE HDB 모든 버전




방법

...

저장 프로시저 내용을 확인하는 방법은 두 가지가 있습니다.

  • 메타 테이블 이용
  • aexport 유틸리티 이용


 

메타 테이블 이용

...

메타 테이블 SYSTEM_.SYS_PROCEDURES_, SYSTEM_.SYS_PROC_PARSE_ 를 이용한 사용자 정의 프로시저 생성 후 이를 사용하여 저장 프로시저 내용을 확인할 수 있습니다.

사용자 정의 프로시저 생성 방법

 

  • 저장 프로시저 및 사용자 정의 함수 출력을 위한 저장 프로시저 

    Code Block
    title저장 프로시저 및 사용자 정의 함수 이름 조회
    languagesql
    -- 저장 프로시저 및 사용자 정의 함수 이름을 화면에 출력합니다. 
    -- EXEC showProcedures;
    CREATE OR REPLACE PROCEDURE showProcedures
    AS
     CURSOR C1 IS
        SELECT U.USER_NAME, PROC.PROC_NAME,
               DECODE(PROC.OBJECT_TYPE, 0, 'PROCEDURE', 1, 'FUNCTION')
          FROM SYSTEM_.SYS_PROCEDURES_ PROC, SYSTEM_.SYS_USERS_ U
         WHERE PROC.USER_ID = U.USER_ID;
        V1 CHAR(40);
        V2 CHAR(40);
        V3 CHAR(20);
    BEGIN
        SYSTEM_.PRINTLN('----------------------------------------------------------------------------------------------------');
        SYSTEM_.PRINT(' USER_NAME                               PROC_NAME');
        SYSTEM_.PRINTLN('                               PROCEDURE/FUNCTION');
        SYSTEM_.PRINTLN('----------------------------------------------------------------------------------------------------');
        OPEN C1;
        LOOP
            FETCH C1 INTO V1, V2, V3;
            EXIT WHEN C1%NOTFOUND;
            SYSTEM_.PRINT(' ');
            SYSTEM_.PRINT(V1);
            SYSTEM_.PRINT(V2);
            SYSTEM_.PRINTLN(V3);
        END LOOP;
        SYSTEM_.PRINTLN('----------------------------------------------------------------------------------------------------');
        CLOSE C1;
    END;
    /

     

  • 저장 프로시저 내용을 확인하기 위한 저장 프로시저

    Code Block
    title저장 프로시저 내용 확인하기 위한 사용자 프로시저
    languagesql
    -- 지정한 저장 프로시저의 내용을 화면으로 출력한다. 
    -- EXEC showProcBody('USER_NAME', 'PROCEDURE_NAME');
    CREATE OR REPLACE PROCEDURE showProcBody(p1 IN VARCHAR(40), p2 IN VARCHAR(40)) 
    AS
    CURSOR C1 IS
        SELECT SYSTEM_.SYS_PROC_PARSE_.PARSE
          FROM SYSTEM_.SYS_PROC_PARSE_
         WHERE SYSTEM_.SYS_PROC_PARSE_.PROC_OID = (SELECT P.PROC_OID
                  FROM SYSTEM_.SYS_PROCEDURES_ P,
                       SYSTEM_.SYS_USERS_ U
                 WHERE U.USER_ID = P.USER_ID
                   AND P.PROC_NAME = p2
                   AND U.USER_NAME = p1)
         ORDER BY SYSTEM_.SYS_PROC_PARSE_.SEQ_NO;
    V1 VARCHAR(4000);
    BEGIN
        OPEN C1;
        SYSTEM_.PRINTLN('---------------------------------');
        SYSTEM_.PRINT(P1);
        SYSTEM_.PRINTLN(' PROCEDURE');
        SYSTEM_.PRINTLN('---------------------------------');
        SYSTEM_.PRINTLN('');
        LOOP
          FETCH C1 INTO V1;
          EXIT WHEN C1%NOTFOUND;
          SYSTEM_.PRINTLN(V1);
        END LOOP;
        CLOSE C1;
    SYSTEM_.PRINTLN('');
    SYSTEM_.PRINTLN('---------------------------------');
    END;
    /

사용자 정의 저장 프로시저 실행 방법


  • 저장 프로시저 및 사용자 정의 함수 목록 확인

    Code Block
    languagesql
    iSQL> exec showProcedures;

     

  • 저장 프로시저 내용 확인

    Panel
    bgColorwhite
    borderStyledashed
    borderColorgrey

    iSQL> exec showProcBody('USER_NAME', 'PROC_NAME');

     

 

aexport 유틸리티 이용

...

aexport는 데이터베이스 객체 생성 구문을 파일에 저장해주는 유틸리티입니다. aexport 수행 후 생성된 파일에서 저장 프로시저 내용을 확인할 수 있습니다. 


aexport 수행 - 모든 객체 


  • aexport 수행 후 생성된 파일 중 ALL_CRT_PROC.sql 에서 모든 저장 프로시저의 생성 구문을 확인할 수 있습니다. 

    Code Block
    title수행 방법
    languagebash
    $ aexport

     

    Code Block
    title수행 예
    languagebash
    $ aexport
    -----------------------------------------------------------------
         Altibase Export Script Utility.
         Release Version 4.3.9.223
         Copyright 2000, ALTIBASE Corporation or its subsidiaries.
         All Rights Reserved.
    -----------------------------------------------------------------
    Write Server Name (default:127.0.0.1) :                    # 알티베이스 서버 아이피 입력
    Write UserID : sys                                                         # sys 입력
    Write Password :                                                          # sys 유저의 패스워드 입력
    ##### TBS #####
    ##### User #####
    ** input user USER1's password (default - same with USER_NAME):     # 사용자 패스워드 입력. 
    ** input user EHEE's password (default - same with USER_NAME): 
    ** input user ALTITEST's password (default - same with USER_NAME): 
    ##### Synonym #####
    ##### Table #####
    ** ALTITEST.ORDERS
    ** SYS.DEMO_EX2
    ** SYS.DEPARTMENT
    ** SYS.EMPLOYEE
    ** SYS.T1
    ** USER1.T1
    
    ##### QUEUE #####
    ##### Sequence #####
    ##### Procedure & Function #####
    ##### View #####
    ##### Replication #####
    ##### TRIGGER #####
    -------------------------------------------------------
      ##### Follow script files are Generated. #####
      1. run_il_out.sh   : [ iloader formout, data-out script ]
      2. run_is.sh       : [ isql table-schema script ]
      3. run_il_in.sh    : [ iloader data-in script ]
      4. run_is_index.sh : [ isql table-index script ]
      5. run_is_fk.sh    : [ isql table-foreign key script ]
      6. run_is_repl.sh    : [ isql replication script ]
    -------------------------------------------------------

     

 

 



유저 별 aexport 수행

 

  • aexport 의 -u 옵션에 데이터베이스 사용자 이름을 입력하고 -p 옵션에 해당 사용자의 패스워드를 입력 후 aexport를 수행하면 해당 사용자 소유의 객체 스키마만 추출합니다.
  • 저장 프로시저 내용은 ALL_CRT_PROC.sql 파일을 참고하세요. 

  • 수행 방법

    Code Block
    title수행 방법
    languagebash
    $ aexport -u user_name -p user_password -s 알티베이스_서버_아이피
     
    또는 
     
    $ aexport 
    Write Server Name (default:127.0.0.1) :     # 알티베이스 서버 아이피 입력          
    Write UserID :            # 객체 소유자 또는 sys 유저를 입력합니다. 무엇을 입력하든지 결과는 동일합니다. 
    Write Password :       # 위에서 입력한 사용자의 패스워드

 

 

객체 별 aexport 수행

  • object 옵션을 사용하면 특정 객체 스키마만 추출할 수 있습니다. 이 옵션은 ALTIBASE HDB 5.5.1 부터 사용할 수 있습니다. 
  • 저장 프로시저의 경우 -object 유저명.프로시저명  형식으로 값을 줄 수 있습니다. 
  • 결과는 유저명_프로시저명_CRT.sql 형식의 이름을 가진 파일이 생성됩니다.   
  • 수행 방법

    Code Block
    title수행 방법
    languagebash
    $ aexport -s 알티베이스_서버_아이피  -u user_name -p user_password -object user_name.procedure_name
     
    또는 
     
    $ aexport -object user_name.procedure_name
    Write Server Name (default:127.0.0.1) :       # 알티베이스 서버 아이피 입력          
    Write UserID :            # 객체 소유자 또는 sys 유저를 입력합니다. 무엇을 입력하든지 결과는 동일합니다. 
    Write Password :       # 위에서 입력한 사용자의 패스워드
     

...