C#からストアドを呼び出し、ストアドの実行結果をOUTPUTにて戻すようにしているのですが
テーブルロックをかけるとOUTPUTの変数に値を入れても呼出元に戻りません。
(ストアド上で@RetIDを見ると値が入っているが、C#側ではNullとなっている。)
環境
VisualStudio2008 C#
SQLServer2008
ストアドサンプルコード
CREATE PROCEDURE Proce_GetID
@tempID INT
,@RetID INT OUTPUT
AS
BEGIN
BEGIN TRY
BEGIN TRANSACTION
--テーブルロック。コメントアウトすると正常に動く。
SELECT * FROM TABLE_A WITH (TABLOCKX)
-- テーブルロックしていても@RetIDに値は入っています。
SELECT @RetID = UserID FROM TABLE_A WHERE TempID = @tempID
COMMIT TRANSACTION
END TRY
BEGIN CATCH
ROLLBACK TRANSACTION
END CATCH
END
OUTPUTで値が戻らない原因をご存知の方いらっしゃいますでしょうか?