我有一个基本的存储过程,它将一个新记录添加到具有如下结构的表中。该表还具有一列“ itemID”,该列设置为自动递增以为每个记录创建唯一的ID。
我想使用Output从插入的新记录中获取此ID,然后将其用于向另一个表(具有colD,colE,colF列的Table2)添加新记录。表2中的colF应该是下面的输出,因为这是链接两个表的ID。
有人可以告诉我这是怎么工作的,因为我是SQL的新手,以前从未做过此事?
我的存储过程(示例):
ALTER PROCEDURE [dbo].[CreateStuff]
@colA datetime,
@colB varchar(50),
@colC nvarchar(20)
AS
BEGIN
SET NOCOUNT ON;
INSERT INTO Table1
(
colA,
colB,
colC
)
SELECT @colA,
@colB,
@colC
END
蒂姆,非常感谢您对此提供的任何帮助。
BEGIN
SET NOCOUNT ON;
/* Here declare a Table Variable */
DECLARE @Table_Var TABLE(itemID INT)
INSERT INTO Table1(colA,colB,colC)
OUTPUT inserted.itemID INTO @Table_Var(itemID)
SELECT @colA,@colB,@colC
/* Now do the insert into Table 2*/
INSERT INTO TABLE2
SELECT itemID FROM @Table_Var
END
SCOPE_IDENTITY()
仅在执行单个插入操作时才有用,它是一个IDENTITY列,其值是要捕获的,它只会返回最后一个Generated Identity值。
否则,如果您要进行多次插入或它不是一个标识列,则应使用OUTPUT
子句以及表可变/临时表来捕获插入的值。然后稍后再执行您要使用它们的值(插入另一个表/记录任何内容)。
要了解更多信息,请OUTPUT Clause
查看此链接。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句