如何使用结果集以及输入、输出参数在java中调用SQL Server存储过程?
在Oracle中,我可以使用以下功能:如何使用结果集以及输入、输出参数在java中调用SQL Server存储过程?,java,sql-server-2008,stored-procedures,jdbc,Java,Sql Server 2008,Stored Procedures,Jdbc,在Oracle中,我可以使用以下功能: String query = "{ ? = call get_config_func( ?, ? ) }"; try { CallableStatement cs = con.prepareCall( query ); cs.registerOutParameter(1, OracleTypes.CURSOR); cs.setInt( 2, i ); cs.regist
String query = "{ ? = call get_config_func( ?, ? ) }";
try
{
CallableStatement cs = con.prepareCall( query );
cs.registerOutParameter(1, OracleTypes.CURSOR);
cs.setInt( 2, i );
cs.registerOutParameter(3, java.sql.types.INTEGER);
cs.execute();
ResultSet results = ((OracleCallableStatement)cs).getCursor (1);
String val = cs.getString(3);
if( results != null)
{
while( results.next() )
{
.....
String query = "{ call uspGetLastLocation( ?, ? }";
try
{
cs = con.prepareCall( query );
cs.setLong(1, id );
cs.registerOutParameter(2, java.sql.Types.VARCHAR );
rs = cs.executeQuery();
while(rs.next())
{
.....
然而,我仍然坚持引用Oracle,因为它不能与SQL Server一起使用
我尝试了以下方法:
String query = "{ ? = call get_config_func( ?, ? ) }";
try
{
CallableStatement cs = con.prepareCall( query );
cs.registerOutParameter(1, OracleTypes.CURSOR);
cs.setInt( 2, i );
cs.registerOutParameter(3, java.sql.types.INTEGER);
cs.execute();
ResultSet results = ((OracleCallableStatement)cs).getCursor (1);
String val = cs.getString(3);
if( results != null)
{
while( results.next() )
{
.....
String query = "{ call uspGetLastLocation( ?, ? }";
try
{
cs = con.prepareCall( query );
cs.setLong(1, id );
cs.registerOutParameter(2, java.sql.Types.VARCHAR );
rs = cs.executeQuery();
while(rs.next())
{
.....
但是我得到了以下错误
“{”附近的语法不正确
我见过使用PreparedStatement
而不是CallableStatement
并将查询更改为
String query = "EXEC uspGetLastLocation ?, ?";
但是我不知道如何处理输出参数
有什么建议或参考资料吗
谢谢。看起来代码中缺少了一个括号。 试试这个
String query = "{ call uspGetLastLocation( ?, ? )}";
我注意到了这一点,但现在我得到了错误“语句没有返回结果集。”其余的语法是否与定义输出参数以及如何获取结果集有关?JDBC API对于Oracle和SQL Server都是一样的。因此,请先测试您的过程,并检查它是否返回任何结果。我相信您的代码执行得很好,并且没有返回您传递的参数的任何结果。谢谢,我可以nally让它工作了。存储过程希望使用默认值的是null而不是0。