0

以下のようなストアド プロシージャを 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);

ご覧のとおり、ストアド プロシージャから 2 つの出力パラメータを取得しようとしています。

インデックス 3 で応答コードを取得できますが、 @a,@b,@c,@d はインデックス 4 で resulset として取得する必要があります (間違っている可能性があります)。

このような種類のストアド プロシージャの結果セットを取得する方法を教えてください。

このストアド プロシージャを Microsoft SQL Server Managment Studio で実行すると、2 種類の応答が表示されます。1 つは結果セット、もう 1 つは以下の ResponseCode です。

ここに画像の説明を入力

4

1 に答える 1

2

結果セットと出力パラメーターを混同しています。投稿のストアド プロシージャには、出力パラメーターが 1 つしかありません@responsecode

出力パラメーターは、proc で設定した後に選択する必要はありません。

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

GO

declare @param int

exec testsp @param output


select @param

SELECT @responsecode;そのため、 callable ステートメントの と 4 番目の登録済みパラメーターも削除します。

データを取得するには、 によって返された結果セットを反復処理しますexecuteQuery()

于 2013-04-10T13:11:33.500 に答える