从存储过程到C#中选择值

本文关键字:选择 存储过程 | 更新日期: 2023-09-27 18:27:30

我有一个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

从存储过程到C#中选择值

我认为您需要使用SETSELECT来设置变量的值。您可能还想使用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()

我不确定你想问什么,但如果你想问如何从SP获得输出值,在ExecuteReader之后,而不是在你这样做之前,只需像对待列一样读取该变量。

int LastValue = int.press(Reader["LastValue"].ToString());