从Stored Proc到C#中选择值

时间:2013-08-14 00:27:26

标签: c# sql sql-server

我有一个看起来像这样的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

2 个答案:

答案 0 :(得分:0)

我不确定你要问的是什么,但是如果你的问题是关于如何从SP获取输出值,那么在执行之后就不会在ExecuteReader之后读取该变量,就像使用列一样正常。

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

答案 1 :(得分:0)

我认为您需要使用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()