【问题标题】:How to use output variable in insert query如何在插入查询中使用输出变量
【发布时间】:2017-05-23 23:53:15
【问题描述】:

我正在将记录从我们的 crm 插入到我们的 erp。 phone 表使用 people 表中的标识列。我需要插入人员记录并捕获作为身份列的 PersonId 中的值,然后使用该 PersonId 作为键将记录插入到电话表中。我得到错误: 消息 137,第 16 层,状态 1,第 16 行 必须声明标量变量“@IdentityID”。 消息 137,第 16 层,状态 1,第 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

消息 137,第 16 级,状态 1,第 16 行 必须声明标量变量“@IdentityID”。 消息 137,第 16 层,状态 1,第 17 行 必须声明标量变量“@IdentityID”。

【问题讨论】:

    标签: tsql


    【解决方案1】:

    输出将是表格变量,您可以使用如下:

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-04-12
      • 2018-01-06
      • 2015-09-02
      • 2022-11-03
      • 1970-01-01
      • 2017-11-21
      • 1970-01-01
      相关资源
      最近更新 更多