2013-04-10 3 views
0

Мы пытаемся выполнить хранимую процедуру в Java, который выглядит, как показано ниже,Невозможно получить Resultset из StoredProc в Java

CREATE PROCEDURE [dbo].[MyProc] 
(
    @input1 varchar(20), 
    @input2 varchar(20), 
    @responsecode  varchar(10) output 
) 
AS 

//Implementation 

SELECT @a,@b,@c,@d; 

SELECT @responsecode; 

Java код выглядит, как показано ниже,

callableStatement = conn.prepareCall("{call MyProc("2","2"))}"); 
callableStatement.registerOutParameter(3, Types.VARCHAR);   
callableStatement.registerOutParameter(4,Types.JAVA_OBJECT); 

Как вы можете см., мы пытаемся получить два выходных параметра из хранимой процедуры,

Мы можем получить код ответа по индексу 3, однако @ a, @ b, @ c, @ d должен прийти как resulset при индексе 4 (может будь я ошибаюсь)

Не могли бы вы дать мне несколько советов о получении результатов для такого рода хранимых процедур.

, когда я выполняю эту хранимую процедуру в Microsoft SQL Server Managment Studio, я вижу два типа ответов, первым является ResultSet и другой является ResponseCode, как показано ниже,

enter image description here

ответ

2

Вы путаете результаты с выходными параметрами. Хранимая процедура в вашем сообщении имеет только один выходной параметр, @responsecode.

Выходные параметры не должны быть выбраны из после установки их в прок:

create procedure testsp (@param int output) 
as 
    set @param = 1 

GO 

declare @param int 

exec testsp @param output 


select @param 

Так удалить SELECT @responsecode;, а также четвёртую зарегистрированный параметр в вашем отзывной заявлении.

Чтобы получить к вашим данным, повторите набор результатов, полученный executeQuery().

+0

Выполнение executeQuery(), мы получаем набор результатов, но затем Как получить код ответа – Pradeep

+1

Использование 'callableStatement.getString (3)' – muhmud