Хранимая процедура в SQL Server не возвращает набор результатов при вызове Java - PullRequest
0 голосов
/ 19 октября 2019

У меня есть следующая хранимая процедура, и моя цель - вернуть из нее набор результатов, используя запрос "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() 

.

Есть идеи, как это исправить, чтобы набор результатов возвращался, а не ноль?

Заранее спасибо

Ответы [ 3 ]

0 голосов
/ 19 октября 2019

Есть несколько способов, но попробуйте это один раз:

создайте proc spAddPerson @ID int, @Name nvarchar (50) as begin SET NOCOUNT ON;

    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
0 голосов
/ 19 октября 2019

При изменении кода Java

вызовите spAddPerson

К

exec spAddPerson

0 голосов
/ 19 октября 2019

Попробуйте это:

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