CALL

CALL — chama um procedimento

Sinopse

CALL nome ( [ argumento ] [, ...] )

Descrição

O comando CALL executa um procedimento. [112] [113]

Se o procedimento tiver algum parâmetro de saída, será retornada uma linha de resultado, contendo os valores desses parâmetros.

Parâmetros

nome

O nome do procedimento (opcionalmente qualificado pelo esquema).

argumento

Uma expressão de argumento para a chamada do procedimento.

Os argumentos podem incluir nomes de parâmetros, usando a sintaxe nome => valor. Funciona da mesma maneira que nas chamadas de função comuns; veja Chamadas de função para obter detalhes.

Devem ser fornecidos argumentos para todos os parâmetros do procedimento que não possuem valor padrão, incluindo os parâmetros OUT. Entretanto, os argumentos que correspondem aos parâmetros OUT não são avaliados, portanto, é comum apenas escrever NULL para eles. (Escrever algo diferente de NULL para um parâmetro OUT pode causar problemas de compatibilidade com versões futuras do PostgreSQL.)

Notas

É necessário ter o privilégio EXECUTE no procedimento para poder chamá-lo.

Para chamar uma função (não um procedimento), deve ser usado o comando SELECT em vez de CALL.

Se o comando CALL for executado em um bloco de transação, então o procedimento chamado não poderá executar instruções de controle de transação. As instruções de controle de transação são permitidas apenas se o comando CALL for executado em sua própria transação.

O PL/pgSQL trata os parâmetros de saída nos comandos CALL de forma diferente; veja Seção 41.6.3.

Exemplos

CALL do_db_maintenance();

Exemplo 77. Exemplo do tradutor

Chamada de procedimento

Este exemplo usa o comando CALL para chamar o procedimento multiplica, que multiplica seus dois parâmetros de entrada retornando o resultado no seu parâmetro de saída.

CREATE OR REPLACE PROCEDURE multiplica
    ( IN x DOUBLE PRECISION, IN y DOUBLE PRECISION, OUT z DOUBLE PRECISION )
AS $$
BEGIN
    z :=  x * y;
END;
$$ LANGUAGE plpgsql;
CREATE PROCEDURE
CALL multiplica( x => 34.5, y => 70.3, z => null);
    z
---------
 2425.35
(1 linha)

Conformidade

O comando CALL está em conformidade com o padrão SQL, exceto pelo tratamento dos parâmetros de saída. O padrão diz que os usuários devem escrever variáveis para receber os valores dos parâmetros de saída.

Veja também

CREATE PROCEDURE


[112] Use o comando CALL para executar uma rotina (um procedimento, ou função independente, ou um procedimento ou função definida em um tipo de dados ou pacote) de dentro do SQL. Oracle 21 – CALL (N. T.)

[113] O comando CALL chama um procedimento ou um procedimento estrangeiro. IBM Db2 for Linux, UNIX and Windows 12.1.x – CALL statement (N. T.)