저장 프로시저 호출

데이터베이스에 저장한 프로시저를 호출하려면 ESQL CALL문을 사용하십시오. 스토어드 프로시저는 다음 절이 있는 CREATE PROCEDURE문에서 정의해야 합니다.
  • DATABASE의 Language 절
  • 데이터베이스와, 선택적으로 데이터베이스가 속하는 데이터베이스 스키마에서 프로시저의 이름을 식별하는 EXTERNAL NAME 절.

CALL문으로 저장 프로시저를 호출할 경우 ESQL 정의와 데이터베이스 정의가 일치하는지 브로커가 확인합니다.

다음 제한사항이 스토어드 프로시저 사용 시 적용됩니다.

ESQL에 저장 프로시저 작성

데이터베이스 저장 프로시저에 해당하는 ESQL 프로시저를 정의할 경우 규정된 이름(규정자가 데이터베이스 스키마) 또는 규정되지 않은 이름을 지정할 수 있습니다.

저장 프로시저를 작성하려면 다음을 수행하십시오.

  1. 이 예와 유사한 명령문을 코딩하여 규정되지 않은 프로시저를 작성하십시오.
    CREATE PROCEDURE myProc1(IN p1 CHAR) LANGUAGE DATABASE EXTERNAL NAME "myProc";

    사용자가 지정한 EXTERNAL NAME이 데이터베이스에서 작성한 정의와 일치해야 하지만 해당 ESQL 프로시저에 대해 사용자가 선택한 이름을 지정할 수도 있습니다.

  2. 이 예와 유사한 명령문을 코딩하여 규정된 프로시저를 작성하십시오.
    CREATE PROCEDURE myProc2(IN p1 CHAR) LANGUAGE DATABASE EXTERNAL NAME "Schema1.myProc";
  3. 이 예와 유사한 명령문을 코딩하여 Oracle 패키지에 규정된 프로시저를 작성하십시오.
    CREATE PROCEDURE myProc3(IN p1 CHAR) LANGUAGE DATABASE EXTERNAL 
                     NAME "mySchema.myPackage.myProc";
데이터베이스의 스토어드 프로시저 정의 예는 CREATE PROCEDURE문의 내용을 참조하십시오.

저장 프로시저 호출

  1. 이 예와 유사한 명령문을 코딩하여 규정되지 않은 프로시저를 호출하십시오.
    CALL myProc1('HelloWorld');

    임의 스키마에 속하는 것으로 명백히 정의되지 않으므로, myProc1 프로시저는 디폴트 스키마(데이터 소스에 연결하는 데 사용되는 사용자 이름에 해당되는 이름)에 존재해야 합니다. 그렇지 않으면 명령이 실패합니다.

  2. 다음 예는 Schema1 스키마에서 myProc 프로시저를 호출합니다.
    CALL myProc2('HelloWorld');
  3. 이 예와 유사한 명령문을 코딩하여 동적 스키마가 있는 규정되지 않은 프로시저를 호출하십시오.
    DECLARE Schema2 char 'mySchema2';
    CALL myProc1('HelloWorld') IN Database.{'Schema2'};

    이 명령문은 Schema2 데이터베이스에서 myProc1 프로시저를 호출하여 디폴트 "username" 스키마를 대체합니다.

두 개의 결과 세트를 리턴하는 저장 프로시저 호출

하나의 입력 매개변수를 취하고 하나의 출력 매개변수와 두 개의 결과 세트를 리턴하는 스토어드 프로시저를 호출하려면 다음을 수행하십시오.
  1. 하나의 입력 매개변수, 하나의 입력 매개변수 및 두 개의 결과 세트를 지정하는 CREATE PROCEDURE 문이 있는 프로시저를 정의하십시오.
    CREATE PROCEDURE myProc1 (IN P1 INT, OUT P2 INT)
      LANGUAGE DATABASE
      DYNAMIC RESULT SETS 2
      EXTERNAL NAME "myschema.myproc1";
  2. 필드 참조를 사용하여 myProc1 프로시저를 호출하려면 다음과 같이 코딩하십시오.
    /* using a field reference */
    CALL myProc1(InVar1, OutVar2, Environment.ResultSet1[], OutputRoot.XML.Test.ResultSet2[]);
  3. 참조 변수를 사용하여 myProc1 프로시저를 호출하려면 다음과 같이 코딩하십시오.
    /* using a reference variable*/
    DECLARE cursor REFERENCE TO OutputRoot.XML.Test;
    
    CALL myProc1(InVar1, cursor.OutVar2, cursor.ResultSet1[], cursor.ResultSet2[]);
주의사항 | 등록상표 | 다운로드 | 라이브러리 | 지원 | 피드백
Copyright IBM Corporation 1999, 2006 마지막 갱신 날짜: 2006/08/21
ac17040_