Criar Stored Procedure dinâmica no DB2
Eu tive a necessidade de escrever uma Stored Procedure dinâmica no DB2 que receberia uma instrução SQL, a executaria e me retornaria um ResultSet.
A mesma seria utilizada em uma tela de busca “genérica” no sistema, para, em tempo de homologação, permitir ao analista efetuar queries, uma vez que o banco de homologação só aceita a chamada de procs, é impossivel efetuar selects diretamente no mesmo.
Enfim, segue o corpo da Procedure, observando que JULIANO é o meu schema:
CREATE PROCEDURE JULIANO1.PSELEMPRRTINGRES (
IN PAR_CAMPO1 VARCHAR (10000) — este é o parametro que passo para a proc
)
SPECIFIC JULIANO1.PSELEMPRRTINGRES
DYNAMIC RESULT SETS 1
P1:BEGIN
DECLARE strSqlDn varchar(10000);
DECLARE stm_procedimento STATEMENT;
DECLARE cursorDn CURSOR WITH RETURN FOR stm_procedimento;
SET strSqlDn = PAR_CAMPO1;
PREPARE stm_procedimento FROM strSqlDn;
OPEN cursorDn;
END P1
Para invocar a proc, basta chamar:
call JULIANO1.PSELEMPRRTINGRES(‘select * from clientes’);
No Java, eu invoco a Proc normalmente, jogando o resultado para um result set, faço um parse para desenhar a tabela no JSP e voa-lá!
Enjoy!