我有一个看起来像这样的SP。尝试从C#程序中的SP中捕获选择值
CREATE PROC sp_Dosomething
@Prefix nvarchar(2),
@Result nvarchar(8) output
AS
BEGIN
DECLARE @LastValue int
DECLARE @FirstValue int
insert into Table1(name,number) values('ssss','123')
@LastValue= @@Identity
insert into Table2(name,number) values('ssss','123')
@FirstValue = @@Identity
Select @LastValue as 'Table1Id', @FirstValue as 'Table2Id'
RETURN True
END
C#
Response.Redirect("~/Pag1.aspx?Accountid=" + Table1Id+"&ClaimId=" + Table2Id,false);
问题:
Accountid = Table1Id = @LastValue This is good
ClaimId= Table2Id = @FirstValue This is always zero
答案 0 :(得分:0)
我不确定你要问的是什么,但是如果你的问题是关于如何从SP获取输出值,那么在执行之后就不会在ExecuteReader之后读取该变量,就像使用列一样正常。
int LastValue = int.press(Reader["LastValue"].ToString());
答案 1 :(得分:0)
我认为您需要使用SET
或SELECT
来设置变量的值。如果有任何触发器可能会更改最后一个标识值,您也可以使用SCOPE_IDENTITY
:
insert into Table1(name,number) values('ssss','123')
SET @LastValue= SCOPE_IDENTITY()
insert into Table2(name,number) values('ssss','123')
SET @FirstValue = SCOPE_IDENTITY()