如何在 SQL 中循环用户定义的数据类型并将参数传递给过程

How to loop User Defined Data Types in SQL and pass parameters to Procedure

考虑我有以下用户定义的数据类型:

CREATE Type udt_MyType as Table(
@ID int,
@Name varchar(20),
@Address varchar(100)
)

假设我存储了如下过程:

CREATE PROCEDURE sp_MyProc (
 @ID int,
 @Name varchar(20),
 @Address varchar(100)
)
----Some Execution----

现在我想通过在 udt_MyType 上循环来创建在 sp_MyProc 上方调用的新 Procdure (***但没有对 sp_MyProc 做任何更改) 所以我想要如下内容:

CREATE Procedure sp_NewProc(
@udt as udt_MyType READONLY
)
AS
BEGIN
     WHILE LOOP on @udt   ----to get each row
     BEGIN
     exec sp_MyProc @udt.ID,@udt.Name,@udt.Address
     NEXT
     END
END

注意:我无权更改sp_MyProc
有没有可能实现sp_NewProc?我想在 UDT 上循环并将参数传递给过程?

使用游标代替 while 循环。

CREATE Procedure sp_NewProc(
@udt as udt_MyType READONLY
)
AS
BEGIN
    DECLARE @ID int,
    @Name varchar(20),
    @Address varchar(100)
    
    Declare cursor_A cursor
    For Select * from @udt
    
    Begin
        OPEN cursor_A
    
        FETCH NEXT FROM cursor_A INTO @ID, @Name, @Address;
            WHILE @@FETCH_STATUS = 0
            BEGIN
                -- To DO Logic
                exec sp_MyProc @ID,@Name,@Address

                FETCH NEXT FROM cursor_A INTO @ID, @Name, @Address;
            END;
    
            CLOSE cursor_A;
            DEALLOCATE cursor_A;
    End;
End;