2016-08-10 5 views
0

asp.net webformsアプリケーション内でSQL Server 2012を使用すると、Web用のVS2012 Express ...ストアドプロシージャ内でINPUTパラメータを再利用することはできますか?

私のストアドプロシージャでは、入力パラメータ@UID_LOGIN AS INTがあります。この値は、コール時にゼロになることがあります。

CREATE PROCEDURE [dbo].[uspUpdateFromDetailsView] 
    @UID_CONTACT INT, 
    @UID_LOGIN  INT, 
    @UID_USER_TYPE INT, -- etc...not shown here... 

この値がゼロで、新しいLOGINレコードで作成され、SCOPE_IDENTITY()は、次のように新しいUID_LOGIN値をフェッチするために使用されます。この新しいことを

-- Retain the key to the inserted-row. 
SET @UID_LOGIN = SCOPE_IDENTITY(); 

は、私はあなたの答えから確保することができ@UID_LOGINの値はストアドプロシージャのローカルのままであり、パラメータの値は変更されません。事前に

おかげであなたが何か他のものにそれを設定するまで...ジョン

答えて

2

はい、@UID_LOGINBATCH= SCOPE_IDENTITY()ままになります。プロシージャが実行されるたびに、新しい@UID_LOGINを渡す必要があります。これは、宣言でデフォルト値を指定していないためです。すなわちCREATE PROCEDURE [dbo].[uspUpdateFromDetailsView] (@UID_LOGIN = NULL) AS...

このようにスニペットをテストすることができます。

-- Comment out the create procedure part 
--CREATE PROCEDURE [dbo].[uspUpdateFromDetailsView] 
--(@UID_CONTACT    INT, 
-- @UID_LOGIN     INT, 
-- @UID_USER_TYPE    INT 
--) 

--declare your variables 
declare @UID_CONTACT INT, @UID_LOGIN INT, @UID_USER_TYPE INT 

--set your variable 
SET @UID_LOGIN = SCOPE_IDENTITY() 

--do some stuff 
INSERT INTO TableA (LOGIN) VALUES @UID_LOGIN 

--check variable 
SELECT @UID_LOGIN 
+0

:ありがとうございました - 回答のための優秀な説明:-) thx ... John –

+0

いいえ、汗がない! @ジョン – scsimon

関連する問題