如何用结果集调用SQL Server中的SQL Server存储过程,并输入,输出参数?

时间:2012-01-24 21:39:25

标签: 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.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() )
            {
             .....

但是我坚持使用不能与SQL Server一起使用的Oracle引用。

我尝试了以下内容:

    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  ?, ?";

但我无法弄清楚如何处理Output参数。

任何建议或指向参考的指针?

感谢。

1 个答案:

答案 0 :(得分:3)

看起来你错过了代码中的一个括号。  试试这个

String query = "{ call uspGetLastLocation( ?, ? )}";