我正在从我们的crm中插入记录到我们的erp。电话表使用人员表中的标识列。我需要插入人员记录并在PersonId中捕获值,该PersonId是一个标识列,然后使用该PersonId作为键将记录插入Phone表。我收到错误: Msg 137,Level 16,State 1,Line 16 必须声明标量变量" @ IdentityID"。 Msg 137,Level 16,State 1,Line 17 必须声明标量变量" @ IdentityID"。
--IdentityTable
CREATE TABLE [dbo].[People](
[People_ID] [int] NOT NULL,
[text] [nvarchar](50) NULL,
[PersonId] [int] IDENTITY(1,1) NOT NULL
) ON [PRIMARY]
--Phone
CREATE TABLE [dbo].[Phone](
[PersonId] [int] NOT NULL,
[text] [nvarchar](50) NULL,
[Number] [nchar](10) NULL
) ON [PRIMARY]
declare @IdentityID table (PersonId int);
INSERT INTO [Bridge].[dbo].[People]
([People_ID]
,[text])
output Inserted.PersonId into @IdentityID
VALUES
(3,'row1'),
(4,'row2');
INSERT INTO [Bridge].[dbo].[Phone]
(PersonId
,[text]
,[Number])
VALUES
(@IdentityID,'row1'),
(@IdentityID,'row2');
Print 'IdentityID' + @IdentityID
Msg 137,Level 16,State 1,Line 16 必须声明标量变量" @ IdentityID"。 Msg 137,Level 16,State 1,Line 17 必须声明标量变量" @ IdentityID"。
答案 0 :(得分:1)
输出将是tablevariable,您可以使用如下:
declare @IdentityID table (PersonId int);
INSERT INTO [dbo].[People]
([People_ID]
,[text])
output Inserted.PersonId into @IdentityID(PersonId)
VALUES
(3,'row1'),
(4,'row2');
INSERT INTO [dbo].[Phone]
(PersonId
,[text]
,[Number])
select PersonId,'row1', 1 from @IdentityID
union all select PersonId,'row2', 2 from @IdentityID
select * from @IdentityID