首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在INSERTion过程中向表值参数添加额外的列

在INSERTion过程中向表值参数添加额外的列
EN

Stack Overflow用户
提问于 2020-12-26 03:02:27
回答 2查看 120关注 0票数 1

给定以下表格类型:

代码语言:javascript
复制
/* Create a table type. */
CREATE TYPE TestType
   AS TABLE
      (someNumber      int,
       someOtherNumber int);
GO

我将这个表类型传递给一个存储过程。在这个存储过程中,我想用一个额外的id someId (对于TestType中的所有行都一样)将来自TestType的数据添加到一个表dbo.someTable中。向TestType中的所有行添加someId的最佳方法是什么

代码语言:javascript
复制
CREATE PROCEDURE dbo.Test @TVP TestType READONLY
AS
    BEGIN
    SET NOCOUNT ON

    DECLARE @someId int;
    SET @someId = 10;

    INSERT INTO dbo.someTable
        (someId,
         someNumber,
         someOtherNumber)
        VALUES
         -- here I want to add all rows from @TVP.
         -- However, @TVP only has the columns someNumber and someOtherNumber.
         -- The column someId is missing. What is the most efficient way
         -- to add the @someId to all rows during insert?
         -- Note that @someId shall be the same value for all rows in @TVP.
    END;
GO
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-12-26 03:05:47

只需从table参数中执行SELECT,并添加一个包含常量值的列:

代码语言:javascript
复制
INSERT INTO dbo.someTable (someId, someNumber, someOtherNumber)
SELECT @someId, someNumber, someOtherNumber 
FROM @TVP
票数 3
EN

Stack Overflow用户

发布于 2020-12-26 03:43:31

这是最有效的方法。

代码语言:javascript
复制
CREATE PROCEDURE dbo.Test 
@TVP TestType READONLY
AS
    BEGIN
    SET NOCOUNT ON

    DECLARE @someId int;
    SET @someId = 10;

    INSERT INTO dbo.someTable
        (someId,
         someNumber,
         someOtherNumber)
        VALUES
          @SomeId
         ,SomeNumber
         ,SomeOtherNumber
    END;
GO
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65450941

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档