Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

liviamf

Função Pl/pgsql + java

Recommended Posts

Olá pessoal,É o seguinte, estou tentando fazer uma chamada a uma função PL/pgslq pelo java. A função é bem simples, é apenas pra verificar se duas informações estão cadastradas no banco. A função e o código em java que estou usando pra chamá-la segue abaixo:CREATE FUNCTION cadaseq(character varying, character varying) RETURNS character varyingAS 'DECLAREretorno varchar;BEGINSELECT INTO retorno * FROM tag WHERE tag=$1 AND grupo=$2;IF FOUND THENRAISE NOTICE ''Foi encontrado % %!'' ,$1,$2;RETURN retorno;ELSE RAISE NOTICE ''Não Foi Encontrado % %!'' , $1,$2;RETURN null; END IF;END;Código java:try {Class.forName("org.postgresql.Driver");Connection db = DriverManager.getConnection (dburl, "postgres", "senha");a = request.getParameter ("tag"); grupo = request.getParameter ("grupo");CallableStatement getInfo = db.prepareCall ("{? = call cadaseq(?,?)}");getInfo.registerOutParameter(1,java.sql.Types.VARCHAR);getInfo.setString(2,a);getInfo.setString(3,grupo);getInfo.execute();ResultSet info = (ResultSet) getInfo.getResultSet().getObject(1);if(info.next()) {String mess = " TAG Already Exists in Cambium, Leaf or Plantlet, verify: <br><br>"+ a;%><jsp:forward page="erro.jsp"> <jsp:param name="erro" value="<%=mess%>"/><jsp:param name="voltar" value="1"/></jsp:forward><%} As menssagens de erro são as seguintes:Quando tento cadastrar algo que já existe: Erro ocorrido no banco de dados: java.lang.ClassCastException: java.lang.StringQuando tento cadastrar algo que NÃO existe: Erro ocorrido no banco de dados: java.lang.NullPointerExceptionAlguém poderia me dizer aonde estou errando?!?!Desde já agradeço muitoooo!!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal consegui resolver!Vou passar a função e o código em java de como que eu fiz, se caso alguém tiver a mesma dúvida....rssssFunção:CREATE FUNCTION chama_tag2(text, text) RETURNS integerAS 'DECLAREgrava RECORD;a ALIAS for $1;gru ALIAS for $2;BEGINSELECT INTO grava * FROM tag WHERE tag = a and grupo = gru;IF NOT FOUND THENRAISE NOTICE ''Não Foi encontrado % %!'' , a,gru;RETURN 0;ELSE RAISE NOTICE ''Foi Encontrado % %!'' , a,gru;RETURN 1;END IF;END;Código em java:CallableStatement cs = db.prepareCall("{ ? = call chama_tag2( ?,? ) }");cs.registerOutParameter(1, Types.INTEGER);cs.setString(2, a);cs.setString(3, gru);cs.execute();int retorno = cs.getInt(1);out.println(retorno); if( retorno != 0){------------------Agradeço a todos, e se alguém tiver alguma dúvida, pode entrar em contato!! _________________

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.