java - SP不返回结果集

标签 java sql sql-server stored-procedures java-stored-procedures

我有一个应该返回代码的存储过程。 PFB 样本 SP。

USE [TEST]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER PROCEDURE [dbo].[test_sp]
    -- Add the parameters for the stored procedure here
    @id int,
    @name varchar(25), 
    @return_code int    OUTPUT
AS
BEGIN
    select @return_code=1
    return @return_code
END

调用此 SP 的 Java 类:

public int callSP() {

        Connection con = getConnection();
        ResultSet rs = null;
        CallableStatement ct = null;
        int returnCode = -1;
        try {
            ct = con.prepareCall("{call test_sp (?,?,?)}");
            ct.setInt(1, 1);
            ct.setString(2, "divya");
            ct.registerOutParameter(3, java.sql.Types.INTEGER);

            ct.executeQuery();

            returnCode = ct.getInt(3);

            if (returnCode == 0) {
                System.out.println("Success");
            }
        } catch (Exception ex) {
                ex.printStackTrace();
        } finally {
            database.close(rs, ct, con);
        }
        return returnCode;
    }

我在运行此程序时遇到异常。异常发生在 ct.executeQuery();并说,

com.microsoft.sqlserver.jdbc.SQLServerException: The statement did not return a result set.

谁能帮帮我吗?

最佳答案

尝试将返回参数作为调用的标量结果,如下所示:

    ct = con.prepareCall("{? = call test_sp (?,?)}");
    ct.registerOutParameter(1, java.sql.Types.INTEGER);
    ct.setInt(2, 1);
    ct.setString(3, "divya");
    ct.execute();

    returnCode = ct.getInt(1);

这里有一些相关主题:

Getting the Return Value from JDBC MSSQL

How to call scalar function from JDBC

关于java - SP不返回结果集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36012993/

相关文章:

java - 为什么隐式类型推断只能在赋值中起作用?

java - 如何在处理中重置 VideoExport 库中 FFMPEG 的路径?

java - 唯一约束失败,SQLite,Java

SQL Server 触发器在插入和更新后未触发

MySql,没有循环用半/随机数据填充表

java - 将 XML 转换为 JSON,与 FasterXML 一起使用的 jaxb 类出现问题

sql - 亚马逊 Redshift : Best way to compare dates

c# - SQL 到 IQueryable LINQ

MySql 查询 - 跨多个表的数学计算

c# - 数据表不接受 varbinary 的值