【问题标题】:Stored procedure in SQL Server does not return a result set when called by javaSQL Server 中的存储过程在被 java 调用时不返回结果集
【发布时间】:2019-10-19 01:56:40
【问题描述】:

我有以下存储过程,我的目标是使用查询“select * from #justTmp”从中返回一个结果集

create procedure spAddPerson
    @ID int,
    @Name nvarchar(50)
as
begin
    create table #justTmp
    (
        num int primary key,
        justName nvarchar(50)
    )

    if @ID in (select C.ContributorID
               from Contributors C)
    begin
        insert into #justTmp
        values (@ID, @Name)
    end

    select *
    from #justTmp
end

这是我的java代码

CallableStatement cstmt = null; 
ResultSet rs = null;

cstmt=conn.prepareCall("{ call spAddPerson(?,?) }");
cstmt.setInt(1, 1);
cstmt.setString(2, "MyName");

cstmt.execute();
rs=cstmt.getResultSet();
int first=rs.getInt(1);
String second=rs.getString(2);

由于某种原因,每当我运行它并调用上述存储过程时,我都会收到一个异常提示

语句没有返回结果集

rs = cstmt.getResultSet() 

代码被执行。

知道如何解决这个问题,以便结果集返回而不是 null 吗?

提前致谢

【问题讨论】:

  • 你可以尝试在 proc 的顶部添加 SET NOCOUNT ON
  • @Ian-Fogelman 怎么样?像这样?创建 proc spAddPerson SET NOCOUNT ON?
  • 如果您手动运行存储过程(如在 SSMS 中)使用 Java 程序使用的相同 @ID,您会得到结果集吗?此外,在begin 之后的行是放置SET NOCOUNT ON 的位置。
  • @user212514 是的,我确实在 SSMS 中手动运行结果集

标签: sql sql-server stored-procedures resultset


【解决方案1】:

试试这个:

create proc spAddPerson
    @ID int,
    @Name nvarchar(50)
    as
    begin
SET NOCOUNT ON
    ...

【讨论】:

  • 我在运行 java 时得到“结果集没有当前行”,但是如果我尝试直接在 SQL Server 中执行该过程,它确实会返回结果集
【解决方案2】:

有多种方法,但请尝试一次:

创建过程 spAddPerson @ID 整数, @Name nvarchar(50) 作为 开始 设置无计数;

    create table #justTmp
    (
    num int primary key,
    justName nvarchar(50)
    )


    if @ID  in
    (
      select C.ContributorID
      from Contributors C
    )
    begin
    insert into #justTmp
    values(@ID,@Name)
    end

    select *
    from #justTmp

 RETURN
end

【讨论】:

  • 运行 java 时收到错误消息“结果集没有当前行”。
【解决方案3】:

关于你的 java 代码更改

调用 spAddPerson

执行 spAddPerson

【讨论】:

    猜你喜欢
    • 2011-01-09
    • 1970-01-01
    • 2014-12-07
    • 2019-11-09
    • 1970-01-01
    • 2016-12-17
    • 2013-08-07
    • 1970-01-01
    • 2011-08-10
    相关资源
    最近更新 更多