CALL 및 EXEC[UTE [PROCEDURE]] 명령

호스트에서 저장 프로시저를 호출하려면 CALL 명령, EXEC 명령, EXECUTE 명령 또는 EXECUTE PROCEDURE 명령을 사용합니다.

CALL, EXEC, EXECUTE, EXECUTE PROCEDURE 명령은 동작과 입력, 출력이 동일합니다. 각기 다른 명령이 다른 프로시저 언어 호출 메소드와 호환되도록 지원합니다. SELECT 명령을 사용하여 스토어드 프로시저를 호출할 수도 있습니다.

요약

CALL procedure_name(arguments)
EXEC procedure_name(arguments)
EXECUTE procedure_name(arguments)
EXECUTE PROCEDURE procedure_name(arguments)
SELECT procedure_name(arguments)

입력

CALL 및 EXEC[UTE [PROCEDURE] 명령의 입력은 다음과 같습니다.
표 1. CALL 및 EXEC[UTE [PROCEDURE]] 입력
입력 설명
procedure_name 호출하려는 스토어드 프로시저의 이름입니다. 프로시저 이름만 지정하는 경우 시스템에서 현재 데이터베이스와 스키마를 검색하고 PATH를 검색하여 프로시저를 찾습니다.

완전한 오브젝트 이름을 지정하여 다른 데이터베이스나 스키마에 정의된 프로시저를 실행할 수 있습니다.

인수 상수 또는 리터럴 인수 목록을 프로시저에 지정합니다. 함수가 상수 또는 리터럴 인수만 사용하는 경우 인수가 함수의 결과일 수 있습니다.

출력

CALL 및 EXEC[UTE [PROCEDURE] 명령의 출력은 다음과 같습니다.

테이블 2. CALL 및 EXEC[UTE [PROCEDURE]] 출력
출력 설명
ERROR: EXECUTE PROC: Permission denied. 이 오류는 현재 사용자 계정에 스토어드 프로시저에 대한 실행 권한이 없음을 나타냅니다.
ERROR: 함수'NAME(ARGS)'이 존재하지 않습니다

인수 유형을 충족하는 함수를 식별할 수 없음

명시적 유형캐스트를 추가해야 할 수 있음

이 메시지는 사용자가 스토어드 프로시저에 잘못된 인수를 입력했음을 나타냅니다. 해당 이름의 프로시저가 있지만 다른 입력 인수를 제공해야 합니다.

설명

권한 필요
스토어드 프로시저를 호출하려면 다음 기준 중 하나를 충족해야 합니다.
  • PROCEDURE 오브젝트에 대한 실행 특권이 있어야 합니다.
  • 특정 프로시저에 대한 실행 특권이 있어야 합니다.
  • 프로시저를 소유해야 합니다.
  • 사용자가 데이터베이스 관리 사용자이거나 현재 데이터베이스 또는 여러 스키마를 지원하는 시스템의 현재 스키마를 소유해야 합니다.

사용량

다음 예는 몇 가지 샘플 사용을 제공합니다.
MYDB.MYSCH(USER)=> CALL updateacct();
MYDB.MYSCH(USER)=> EXEC schema_two.myproc();
MYDB.MYSCH(USER)=> EXECUTE sales.dev.inventorysearch(umbrellas);
MYDB.MYSCH(USER)=> EXECUTE PROCEDURE updateacct();
SELECT 명령을 사용하여 프로시저를 실행할 수도 있지만, FROM절을 지정할 수 없습니다. 예를 들어,
MYDB.MYSCH(USER)=> SELECT updateacct();
MYDB.MYSCH(USER)=> SELECT inventorysearch(umbrellas);