`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 명령을 함께 확인해요.