繁体   English   中英

如何在 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 上循环来创建新的 Procdure,它在 sp_MyProc 之上调用(***但不对 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 上循环并将参数传递给过程?

使用 cursor 而不是 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;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM