`CALL` — 프로시저 호출
CALL — 프로시저 호출
함수가 아니라 프로시저(procedure)를 실행하고 싶을 때 쓰는 명령이 CALL이에요. 프로시저에 출력 파라미터가 있으면 결과 행이 반환돼요.
출처: PostgreSQL 문서
본문
CALL은 프로시저를 실행해요.
Synopsis (개요)
CALL name ( [ argument ] [, ...] )
Description (설명)
CALL은 프로시저를 실행해요.
프로시저에 출력 파라미터(output parameters)가 있으면, 그 파라미터들의 값을 담은 결과 행이 반환돼요.
Parameters (파라미터)
name— 프로시저의 이름(선택적으로 스키마로 한정).argument— 프로시저 호출을 위한 인자 표현식. 인자는name => value문법을 사용해 파라미터 이름을 포함할 수 있어요. 이는 일반 함수 호출과 동일하게 동작해요(자세한 내용은 섹션 4.3 참고). 기본값이 없는 모든 프로시저 파라미터에는OUT파라미터를 포함해 인자를 제공해야 해요. 다만OUT파라미터에 대응하는 인자는 평가되지 않으므로, 보통 그냥NULL을 쓰는 게 관례예요. (OUT파라미터에 다른 값을 쓰면 미래 PostgreSQL 버전과의 호환성 문제를 일으킬 수 있어요.)
Notes (주의)
프로시저를 호출하려면 그 프로시저에 대한 EXECUTE 권한이 있어야 해요.
함수(프로시저가 아닌)를 호출하려면 SELECT를 사용해요.
CALL이 트랜잭션 블록 안에서 실행되면, 호출된 프로시저는 트랜잭션 제어 문장을 실행할 수 없어요. 트랜잭션 제어 문장은 CALL이 자기만의 트랜잭션에서 실행될 때만 허용돼요.
PL/pgSQL은 CALL 명령에서 출력 파라미터를 다르게 처리해요(섹션 41.6.3 참고).
Examples (예시)
CALL do_db_maintenance();
Compatibility (호환성)
CALL은 출력 파라미터 처리 외에는 SQL 표준에 부합해요. 표준에서는 사용자가 출력 파라미터의 값을 받을 변수를 써야 한다고 규정해요.
더 알아보기 (Learn more)
- 프로시저를 만드는
CREATE PROCEDURE명령을 함께 확인해요.