DB2 - Banco de dados - Instruções e Funções Básicas - CALL
Para executar um procedimento armazenado a partir de uma sessão do QMF, é necessário emitir uma instrução CALL a partir do painel SQL Query. O banco de dados para o qual a instrução CALL é direcionada deve suportar a habilidade de chamar um procedimento armazenado.
Após digitar a instrução CALL, um comando RUN é emitido para executar o procedimento armazenado.
(1) (2) >>-CALL--procedure_name----(------+---------------+--)------>< | (3) | +-&variável-----+ | (4) | +-CONSTANT------+ | (5) | '-NULL----------'
A instrução CALL deve ser usada sozinha em uma consulta SQL. Não é possível combiná-la com outras instruções.
QMF suporta até 63 parâmetros na instrução CALL. Os parâmetros na instrução CALL são usados da seguinte maneira:
Valores de entrada transmitidos para o procedimento armazenado.
Os nomes da variáveis de substituição definidas pelo usuário do QMF recebem os valores das variáveis de saída retornados do procedimento armazenado. Antes de usar a instrução CALL, estes nomes devem ser configurados pelo usuário com o comando SET GLOBAL do QMF.
Você deverá usar uma variável global do QMF para especificar os parâmetros de saída para um procedimento armazenado, se desejar visualizar a saída. Os parâmetros de saída podem então ser exibidos com o uso do comando SHOW GLOBALS. Um máximo de dez variáveis globais do QMF pode ser inserido a partir do painel SQL Query. O tamanho máximo de uma variável de substituição do QMF é de 32 KB.
A instrução CALL falha quando os parâmetros OUT definidos para o procedimento armazenado não são inicializados corretamente. As variáveis globais do QMF cujos valores são copiados nos parâmetros de saída para o procedimento armazenado possuem requisitos de inicialização especiais:
Podem ser usados como entrada ou saída e podem ter o comportamento dos ou parâmetros de entrada ou de saída.
Uma linha de consulta SQL única é limitada a 79 bytes no painel SQL Query do QMF. Um identificador que abrange mais de uma linha em uma instrução CALL inserida no painel SQL Query deve ser um identificador delimitado. Aqui estão alguns exemplos que mostram como codificar instruções CALL:
CALL USERID.PROC (’THIS IS THE FIRST PARM’, 4, 1954, "THIS IS ANOTHER PARÂMETRO QUE SE ESTENDERÁ POR DUAS LINHAS NESTE PAINEL", 14, 99)
CALL USERID.’THIS_IS_A_REALLY_LONG_STORED_PROCEDURE_NAME_THAT_EXCEEDS_ EXCEDE_MAIS_DE_UMA_LINHA_NO_PAINEL_DE_CONSULTA' (’PARM1’, ’ ’, 0, ’PARM4’)
CALL USERID.PROC ('ESTE É O PRIMEIRO PARM’, 4, 1964, ’ESTE É OUTRO PARÂMETRO QUE AGORA SE AJUSTARÁ NESTA LINHA’, 14, 99) CALL USERID.PROC (’THIS IS THE FIRST PARM’, 333333, 123456789012345678901234567890, 200305, ’THIS IS THE LAST PARM’)
CALL USERID.PROC ("ESTE É O PRIMEIRO PARM E ELE NÃO SÓ SE ESTENDE ALÉM DA PRIMEIRA LINHA, COMO TAMBÉM VAI ALÉM DA SEGUNDA LINHA PORQUE HÁ PALAVRAS DEMAIS PARA SE AJUSTAREM EM APENAS DUAS LINHAS").
Se você não especificar um formulário no comando RUN QUERY que emite a instrução CALL, um formulário padrão será criado com base no conjunto de resultados retornados. Se o procedimento armazenado retornar mais de um conjunto de resultados, você poderá exibir um deles, especificando seu número na variável global DSQEC_SP_RS_NUM; o restante dos conjuntos de resultados serão ignorados.
Se o comando RUN QUERY que chama o procedimento armazenado incluir o parâmetro FORM, certifique-se de que o formulário especificado corresponda aos dados retornados no conjunto de resultados, ou o QMF emitirá uma mensagem de erro. Neste caso, é possível carregar o formulário apropriado utilizando o comando DISPLAY FORM, ou modificar ou reconfigurar o formulário atual para corresponder aos dados retornados.