:)
我有这个定义的类型:
CREATE TYPE dbo.MyType
AS TABLE
(
name varchar(255),
value varchar(255)
);
具有此存储过程:
CREATE PROCEDURE MyProcedure @docName varchar(255), @docPath varchar(255), @values AS [dbo].MyType Readonly
AS
declare @ID table (ID int)
INSERT INTO MyTable output inserted.fileID into @ID values (@docName,@docPath)
-- insert loop here
GO;
以及下面的“一对多”表
CREATE TABLE TableN (
fileID int PRIMARY KEY,
name varchar(255),
value varchar(255)
)
我如何在上面的代码中指出的地方进行循环,以便将MyType
表中的每个记录与{{1}中的fileID一起插入到TableN中}?
谢谢!
答案 0 :(得分:2)
不需要循环(您需要停止在SQL中以编程方式进行思考,而在数据集中进行思考)。只需执行INSERT
:
INSERT INTO TableN (FileID,[name],[value])
SELECT ID.ID,
V.[Name],
V.[value]
FROM @values v
CROSS JOIN @ID ID;