Insert a row for every row in a UDT

Just use that table-valued parameter like table – proper set-based approach, no messy while or for loop needed:

ALTER PROCEDURE [dbo].[spCreateTaskInstances]
    @TaskId INT,
    @CreatedByUserId INT,
    @DueDates dbo.DateList READONLY
AS 
BEGIN 
    SET NOCOUNT ON

    INSERT INTO dbo.taskinstance (TaskId, CreatedById, DueDate, RowGuid, CreatedDate) 
        SELECT
            @TaskId, @CreatedByUserId, CAST(d.item AS DATE), NEWID(), GETUTCDATE()
        FROM
            @DueDates d
END

CLICK HERE to find out more related problems solutions.

Leave a Comment

Your email address will not be published.

Scroll to Top