Sql 如何将存储过程输出值设置为声明变量
我的存储过程将在插入日期后返回一个ID,我成功地插入到数据,但每次我的Sql 如何将存储过程输出值设置为声明变量,sql,sql-server-2008,tsql,Sql,Sql Server 2008,Tsql,我的存储过程将在插入日期后返回一个ID,我成功地插入到数据,但每次我的@test值都将为0,但实际上我的存储过程返回一个ID,例如123 我的代码如下 declare @INS_ID int, @test int EXEC @test = Ins_Data 4,'Apple','Apple','Apple',@INS_ID OUTPUT select @test 似乎你把存储过程返回值与输出参数混淆了——考虑这个过程 CREATE PROCEDURE dbo.TestProc @i INT
@test
值都将为0,但实际上我的存储过程返回一个ID,例如123
我的代码如下
declare @INS_ID int, @test int
EXEC @test = Ins_Data 4,'Apple','Apple','Apple',@INS_ID OUTPUT
select @test
似乎你把存储过程返回值与输出参数混淆了——考虑这个过程
CREATE PROCEDURE dbo.TestProc @i INT OUTPUT
AS
SET @i = 2;
RETURN 1;
如果你打电话
DECLARE @a INT, @b INT;
EXECUTE @a = dbo.TestProc @b OUT;
SELECT @a, @b;
@a将是1(因为在过程中返回1
)@b将是2,因为在过程中它被设置为2
为什么
@INS\u ID
不包含ID?这是一个输出参数,新的记录id可以在过程中分配给该参数。那么就根本不需要@test变量了。我在另一个存储过程中调用存储过程。谢谢,没关系。您是否编写了INSU数据过程?是否有Return
语句?如果您的@test
变量始终包含0,我怀疑是否存在。执行过程后,@INS\u ID
变量是否包含新ID?