Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何将存储过程输出值设置为声明变量_Sql_Sql Server 2008_Tsql - Fatal编程技术网

Sql 如何将存储过程输出值设置为声明变量

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

我的存储过程将在插入日期后返回一个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 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?