Como criar um procedimento DB2 armazenado em SQL com as seguintes condições?
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
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
@