2013-04-10 16 views
0

我們正在努力執行中的Java存儲過程,它看起來像下面從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應該是索引4處的resulset(可能是是我錯了)

你可以給我一些關於獲得這樣的存儲過程結果集的poninters。

當我執行在Microsoft SQL Server梟雄工作室這個存儲過程,我可以看到兩種反應,第一種是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 2013-04-10 13:24:56

+1

使用'callableStatement.getString(3)' – muhmud 2013-04-10 13:36:08