我正在使用SQL Server中的存储过程在表中插入一行,并要求它返回scope_identity()
,但返回的是NULL值?那么,如何获得正确的价值?
ALTER PROCEDURE SALES.AddDiscount
@Description NVARCHAR(255),
@DiscountPct SMALLMONEY,
@Type NVARCHAR(50),
@Category NVARCHAR(50),
@StartDate DATETIME,
@EndDate DATETIME,
@MinQty INT,
@MaxQty INT,
@NewProductID INT OUT
AS
BEGIN
SET NOCOUNT ON;
INSERT INTO SALES.SpecialOffer
VALUES (@Description, @DiscountPct, @Type, @Category, @StartDate, @EndDate, @MinQty, @MaxQty);
SELECT SCOPE_IDENTITY() AS scopeIdentity
END
DECLARE @productnewid INT
EXECUTE SALES.AddDiscount 'THIS IS SQL SERVER', 1234, 'D', 'E', '1989-01-01', '1989-12-29' , 5 , 10, @productnewid OUT
答案 0 :(得分:0)
首先是在您的表上创建一个标识列以获取您的scope_identity()
[id] [int] IDENTITY(1,1) NOT NULL,
在scope_identity()
SELECT @NewProductID = SCOPE_IDENTITY()
BEGIN
SET NOCOUNT ON;
INSERT INTO SALES.SpecialOffer VALUES( @Description, @DiscountPct, @Type, @Category, @StartDate, @EndDate, @MinQty, @MaxQty);
SELECT @NewProductID = SCOPE_IDENTITY()
RETURN
END
测试:
DECLARE @productnewid INT
EXECUTE SALES.AddDiscount 'THIS IS SQL SERVER', 1234, 'D', 'E', '1989-01-01', '1989-12-29' , 5 , 10, @productnewid OUT
SELECT @productnewid