Sql server 如何遍历用户定义的表数据类型的行并插入到表中?

Sql server 如何遍历用户定义的表数据类型的行并插入到表中?,sql-server,Sql Server,我在数据库中创建了一个用户定义的数据类型: CREATE TYPE [dbo].[QuestionList] AS TABLE ( [QuestionUId] UNIQUEIDENTIFIER NULL); 然后,我将其传递到存储过程中,如下所示: CREATE PROCEDURE dbo.sp_ins @Title NVARCHAR (100) , @Questions QuestionList READONLY,

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

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
);

对我来说,看起来根本不需要迭代,简单的基于集合的插入即可:

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

您的TestQuestionId不是已经是一个递增的数字了吗?没错,但是我需要QuestionNumber来递增还有其他原因。这个表实际上有更多的字段。我只是没有显示这些字段来将问题简化为最基本的问题。您希望
QuestionNumber
TestQuestion
中是唯一的,还是每次调用存储过程都从
1
重新启动?每次调用存储过程都从1重新启动。事实上,我没有显示这个,但是有另一个参数使它独一无二。谢谢。我现在就试试。