Chamando um Stored Procedure do SQL Server

14 respostas
W

Pessoal, tenho que buscar dados de um servidor SQL Server 6.5 e estou tendo que usar ODBC. Primeiramente tenho que invocar uma stored procedure que irá povoar uma tabela e posteriormente selecionar os dados dessa tabela. Se invoco a procedure direto do Enterprise Manager do SQL 6.5 a tabela é povoada, mas da minha aplicação ela não está sendo povoada. A procedure está sendo chamada, pois não estou tendo erro. Estou chamando da seguinte forma:

CallableStatement cs = con.prepareCall("{ call sp_GERAESPGUIAIPTU(?,?,?,?,?,?)}");			

cs.setString(1,ano);

cs.setString(2,i1);

cs.setString(3,i2);

cs.setString(4,i3);

cs.setString(5,i4);

cs.setInt(6,1);

cs.execute();

Como disse não recebo erro, mas a tabela não é povoada. Estou chamando da forma correta? Alguém pode me ajudar?

14 Respostas

D

Tire as chaves do SQL.

acho que é esse o problema.

W

As chaves fazem parte da sintaxe, retirando dá erro. Todos os exemplos que vi na web usam as chaves, por exemplo, veja em http://javaalmanac.com.
A aplicação que usa esse banco está escrita em VB e usa ADO. Tentei chamar a sp do delphi com conexão via ODBC e também deu o mesmo problema. Mudamos para conexão ADO, no delphi, e tudo funcionou. Estou achando que só com conexão ADO que é possível fazer isso. Agora ADO e Java não casam, não é mesmo?

D

Sua procedure retorna alguma coisa, ou apenas executa ???

W

não tem nenhum parâmetro output, só executa, mas a pessoa que desenvolveu o sistema disse que possível obter um retorno dela, no caso um número da guia, mas formalmente ela não tem nenhum parâmetro output, só input…

D

Então só tenho uma coisa a dizer:
O erro está na procedure !!!

W

Acho que não, pois a aplicação em VB chama ela sem problemas. Tentei chamar a procedure via Delphi e não funcionou também, conectando via ODBC. Mudei o tipo de conexão para ADO e tudo funcionou perfeitamente. Então acho que só funciona com ADO. Sendo assim estou perdido né, pois java não trabalha com ADO… :?

D

Se a procedure funciona, o erro pode estar, na sua classe de conexão com o banco. ou mesmo no arquivo JDBC. Tente achar um arquivo JDBC atualizado.

W

Não estou usando JDBC estou usando ODBC. Na verdade é bridge jdbc/odbc.

sun.jdbc.odbc.JdbcOdbcDriver

Eu consigo conectar, fazer select, mas chamar a sp e povoar a tabela não. Ele chama a procedure, executa, não dá erro nenhum no código, não cai no catch(exceção), mas a tabela não é povoada
Um amigo meu há um tempo atrás tentou se conectar com um jdbc da jtds, se não me engano, mas não conseguiu. O SQL Server que tenho que conectar é o 6.5, vc conhece algum outro jdbc?

D

Não conheço, mas no seu catch, coloque um printStackTrace() e poste a exceção aqui pra gente analisar.

W

Não cai no catch, não dá exceção alguma. A sp é executada mas não povoa a tabela

D

Uma alternativa:
http://search.microsoft.com/search/results.aspx?st=b&na=88&View=en-us&qu=download+JDBC

W

Mas será que jdbc pra sql server 2000 vai funcionar pra sql 6.5?

D

No site diz que não funciona, mas como nada que a microsoft diz é verdade, não custa tentar !!!

W

É, baixei aqui e vou testar

Criado 22 de janeiro de 2004
Ultima resposta 23 de jan. de 2004
Respostas 14
Participantes 2