Sql 在插入过程中向表值参数添加附加列
给定以下表格类型:Sql 在插入过程中向表值参数添加附加列,sql,sql-server,tsql,sql-insert,table-valued-parameters,Sql,Sql Server,Tsql,Sql Insert,Table Valued Parameters,给定以下表格类型: /* Create a table type. */ CREATE TYPE TestType AS TABLE (someNumber int, someOtherNumber int); GO 我将此表类型传递给存储过程。在这个存储过程中,我想将TestType中的数据添加到表dbo.someTable,其中包含一个额外的idsomeId(与TestType中的所有行相同)。向TestType中的所有行添加someId的最佳方法
/* Create a table type. */
CREATE TYPE TestType
AS TABLE
(someNumber int,
someOtherNumber int);
GO
我将此表类型传递给存储过程。在这个存储过程中,我想将TestType
中的数据添加到表dbo.someTable
,其中包含一个额外的idsomeId
(与TestType
中的所有行相同)。向TestType
中的所有行添加someId
的最佳方法是什么
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
只需从table参数中选择,并添加一个具有常量值的列:
INSERT INTO dbo.someTable (someId, someNumber, someOtherNumber)
SELECT @someId, someNumber, someOtherNumber
FROM @TVP
只需从table参数中选择,并添加一个具有常量值的列:
INSERT INTO dbo.someTable (someId, someNumber, someOtherNumber)
SELECT @someId, someNumber, someOtherNumber
FROM @TVP
这是最有效的方法
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
这是最有效的方法
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
你不能改变TVP;您必须使用不同的对象。谢谢,我知道我不能直接更改TVP。我也不想这样做,我只需要在插入时添加一个值,这样就可以执行某种set操作,从TVP向列中添加一列并返回一个新表;您必须使用不同的对象。谢谢,我知道我不能直接更改TVP。我也不想这样做,我只需要在插入时添加一个值,这样就可以执行某种set操作,从TVP向列添加一列并返回一个新表。