Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用结果集以及输入、输出参数在java中调用SQL Server存储过程?_Java_Sql Server 2008_Stored Procedures_Jdbc - Fatal编程技术网

如何使用结果集以及输入、输出参数在java中调用SQL Server存储过程?

如何使用结果集以及输入、输出参数在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

在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() )
            {
             .....
    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。