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重新启动。事实上,我没有显示这个,但是有另一个参数使它独一无二。谢谢。我现在就试试。