CALL문을 사용하여 사용자 작성 루틴 호출

ESQL CALL문은 루틴을 호출합니다. 루틴은 다음 중 하나로 정의된 사용자 정의 함수 또는 프로시저입니다.
  • CREATE FUNCTION 문
  • CREATE PROCEDURE 문
주: 표준 사용자 정의 함수 및 프로시저와 함께 CALL을 사용하여 내장(브로커 제공) 함수 및 사용자 정의 SQL 함수를 호출할 수도 있습니다. 그러나 이 함수 유형을 호출하는 일반적인 방법은 단순히 표현식에 이름을 사용하는 것입니다.
CALL문을 사용하여 다음과 같은 방법으로 구현된 루틴을 호출할 수 있습니다.
  • ESQL.
  • Java.
  • 데이터베이스에 저장된 프로시저.
  • 내장(브로커 제공) 함수. (그러나 내장 함수 호출은 위에 있는 참고를 참조하십시오.)

CALL문의 구문과 매개변수에 대한 자세한 내용은 CALL문을 참조하십시오. CALL의 사용 예는 CREATE PROCEDURE문의 예를 참조하십시오.

EQSL 루틴 호출

루틴 정의에서 ESQL의 LANGUAGE 절을 지정하거나 루틴이 내장 함수인 경우 루틴이 ESQL 메소드로 호출됩니다.

각 매개변수의 데이터 유형 및 방향의 정의와 CALL이 정확히 일대일로 일치해야 합니다.

ESQL 루틴은 목록 및 행을 제외하고 ESQL 데이터 유형을 리턴할 수 있습니다.

Java 루틴 호출

루틴 정의에서 Java의 LANGUAGE 절을 지정하는 경우 루틴이 Java 메소드로 호출됩니다.

각 매개변수의 데이터 유형 및 방향의 정의와 CALL이 정확히 일대일로 일치해야 합니다.

Java 메소드에 void return 유형이 있는 경우 리턴할 값이 없기 때문에 INTO 절을 사용할 수 없습니다.

Java 루틴은 ESQL 대 Java 데이터 유형 맵핑 테이블에서 모든 데이터 유형을 리턴할 수 있습니다. 목록 및 행이 제외됨에 유의하십시오.

데이터베이스 저장 프로시저 호출

루틴 정의에 DATABASE의 LANGUAGE 절이 있는 경우 루틴이 데이터베이스 저장 프로시저로 호출됩니다.

데이터베이스 저장 프로시저를 호출하면 브로커는 제품의 로컬 이름과 일치하는 정의(CREATE PROCEDURE 문으로 작성된)를 검색합니다. 그러면 브로커가 다음 순서를 사용하여 데이터베이스의 프로시저에 알려진 이름과 속해 있는 데이터베이스 스키마를 해석합니다.

  1. CALL문에 IN 절을 지정할 경우, 데이터 소스의 이름이나 데이터베이스 스키마, 또는 둘 다를 IN 절에서 가져옵니다.
  2. CALL문의 IN 절에 데이터 소스의 이름이 제공되지 않으면 노드의 DATASOURCE 속성에서 가져옵니다.
  3. CALL문의 IN 절에 데이터베이스 스키마가 제공되어 있지 않지만 CREATE PROCEDURE 문의 EXTERNAL NAME 절에 지정한 경우에는 EXTERNAL NAME 절에서 취합니다.
  4. 데이터베이스 스키마가 CREATE PROCEDURE 문의 EXTERNAL NAME 절에 지정되지 않은 경우 데이터베이스의 사용자 이름이 스키마 이름으로 사용됩니다. 일치하는 프로시저가 있는 경우 루틴이 호출됩니다.
CALL문에서 IN 절을 적절히 사용하면 런타임 시 데이터 소스나 데이터베이스 스키마, 또는 둘 다를 동적으로 선택할 수 있습니다.
주: CALL문의 IN 절 뿐만 아니라, EXTERNAL SCHEMA 절에서도 저장된 프로시저를 포함하는 데이터베이스 스키마를 동적으로 선택할 수 있지만 IN 절만큼 유연하지 않으며 단지 역호환성을 위해 보유합니다. 새 응용프로그램에서는 사용되지 않습니다.

호출된 루틴의 정의에서 DYNAMIC RESULT SETS를 지정한 경우에는 CALL문의 ParameterList에 있는 표현식 수는 루틴에 대한 실제 매개변수의 수와 DYNAMIC RESULT SETS의 수를 합친 수와 일치해야 합니다. 예를 들어, 루틴에 세 개의 매개변수가 있고 두 개의 DYNAMIC RESULT SETS가 있는 경우 CALL문은 다섯 개의 매개변수를 호출된 루틴에 전달해야 합니다. 두 개의 DYNAMIC RESULT SETS에 대해 전달된 매개변수는 목록 매개변수여야 합니다. 즉, 배열 대괄호 [ ]로 규정된 필드 참조여야 합니다(예: Environment.ResultSet1[]).

데이터베이스 저장 프로시저는 간격, 목록 및 행을 제외하고 ESQL 데이터 유형을 리턴할 수 있습니다.

관련 개념
ESQL 개요
주의사항 | 등록상표 | 다운로드 | 라이브러리 | 지원 | 피드백
Copyright IBM Corporation 1999, 2006 마지막 갱신 날짜: 2006/08/21
ac06009_