我有一个带有两个插入语句的存储过程.我想从第一个插入中返回ID.看起来大致如下:
declare @retVal int
Begin transaction
insert into myTable(..) values (..)
set @retVal = scope_identity()
insert into myTable2(..) values(..)
Commit transaction
return @retVal
Run Code Online (Sandbox Code Playgroud)
当我这样做时,插入语句工作正常,但每次返回相同的值(在这种情况下,ID 6来自myTable,出于某种奇怪的原因.)
有人会猜测发生了什么吗?
请使用OUTPUT参数.RETURN用于返回状态/错误代码,而不是数据.例如,RETURN只有句柄INT.猜猜你换桌子时会发生什么,BIGINT因为INT还不够?
ALTER PROCEDURE dbo.YourProcedure
@params VARCHAR(32),
@Table1ID INT = NULL OUTPUT
AS
BEGIN
SET NOCOUNT ON;
BEGIN TRANSACTION;
INSERT dbo.Table1...
SET @Table1ID = SCOPE_IDENTITY();
INSERT dbo.Table2...
COMMIT TRANSACTION;
END
GO
Run Code Online (Sandbox Code Playgroud)