Como criar um procedimento DB2 armazenado em SQL com as seguintes condições?

Sou novo nisto. Por favor, não diminua a pergunta.

criei uma tabela chamada 'FormData' que contém os seguintes campos Revisor, AgencyName, nome, e-mail, telefone e todo o tipo varchar. Eu tenho que recuperar todas as linhas de FORMDATA onde o revisor é igual ao valor do Revisor dado pelo Usuário.

escrevi a seguir o código, mas não estou a perceber qual é o problema nisto.

CREATE PROCEDURE GetFormData( INOUT Reviewer varchar,
                              INOUT AgencyName varchar,
                              INOUT Name varchar,
                              INOUT Email varchar,
                              INOUT Phone varchar)
LANGUAGE SQL
P1:BEGIN
DECLARE v_Reviewer varchar;
SET v_Reviewer=Reviewer;
SELECT * FROM TRAININGDB.FormData
WHERE Reviewer=v_Reviewer;
END P1

o erro que recebi depois disto é:

DB21034E o comando foi processado como uma declaração SQL porque não era uma comando de processamento de linha de comandos válido. Durante o processamento SQL voltou: SQL0104N um token inesperado "fim de declaração" foi encontrado após " Revisor varchar "

estamos a usar o DB2 no servidor WebSphere e os detalhes restantes são. Identificador do produto: SQL09075 DB2 v9. 7. 500. 702 JDK 1, 6 OS: Windows 7

Author: Jay, 2017-08-09

1 answers

Existem vários problemas com o seu código, e também omite os detalhes da chave da sua pergunta ( A(S) Ferramenta (s) que está a usar/versions/operating-system details).

O SQL0104N acontece porque você não configurou a ferramenta que usou para enviar a declaração para indicar um separador de declarações alternativo. Dentro do procedimento o delimitador intra-declaração é semicolon, mas você precisa de um delimitador adicional para marcar o fim do procedimento (e configurar a ferramenta que submete o indicação para especificar esse delimitador adicional).

Como você está aprendendo, o melhor conselho é estudar o exemplo IBM SQL PL procedimentos armazenados , e fazê-los trabalhar em seu ambiente. Estes são visíveis tanto no centro de Conhecimento online para a sua versão do DB2 e também estão instalados em qualquer servidor DB2 Linux/Windows/Unix.

Abaixo está um exemplo do seu procedimento se o submeter da linha de comandos shell no Unix ou no Windows (db2cmd.exe ou The bash shell). Procurar a sintaxe para tudo o que é diferente de suas versões e ajustá-lo conforme necessário.

--#SET TERMINATOR @
CREATE or replace PROCEDURE GetFormData( IN p_Reviewer varchar(20))
result sets 1
specific GetFormData
LANGUAGE SQL
P1:
BEGIN
    declare c1 cursor for SELECT * FROM TRAININGDB.FormData WHERE Reviewer=p_Reviewer;
    open c1;
END P1
@
 3
Author: mao, 2017-08-09 09:50:43