如何迭代用户定义的表数据类型的行并插入表中?

时间:2014-07-01 12:08:40

标签: sql-server

我在我的数据库中创建了一个用户定义的数据类型:

CREATE TYPE [dbo].[QuestionList] AS TABLE (
    [QuestionUId] UNIQUEIDENTIFIER NULL);

然后我将它传递到我的存储过程中:

CREATE PROCEDURE dbo.sp_ins
       @Title          NVARCHAR (100) ,
       @Questions      QuestionList READONLY,
       @TopicId        INT                           
AS 
BEGIN 

有人可以告诉我如何获取Questions参数的内容,迭代它并将内容与递增的QuestionNumber 一起插入此表中:

CREATE TABLE [dbo].[TestQuestion] (
    [TestQuestionId] INT              IDENTITY (1, 1) NOT NULL,
    [QuestionNumber] INT              NOT NULL,
    [QuestionUId]    UNIQUEIDENTIFIER NOT NULL
);

1 个答案:

答案 0 :(得分:1)

对我来说,看起来你根本不需要迭代,简单的基于set的插入会做:

INSERT INTO dbo.TestQuestion (
    QuestionNumber,
    QuestionUId)
SELECT
    ROW_NUMBER() OVER (ORDER BY (SELECT NULL)),
    QuestionUId
FROM @Questions