스토어드 프로시저 호출

데이터베이스에 저장한 프로시저를 호출하려면 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, 2005 마지막 갱신 날짜: 11/08/2005
ac17040_