CALL — chama um procedimento
CALLnome( [argumento] [, ...] )
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.
nomeO nome do procedimento (opcionalmente qualificado pelo esquema).
argumentoUma expressão de argumento para a chamada do procedimento.
Os argumentos podem incluir nomes de parâmetros, usando a sintaxe
.
Funciona da mesma maneira que nas chamadas de função comuns;
veja Chamadas de função para obter detalhes.
nome => valor
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.)
É 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.
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)
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.
[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.)