[英]How to use SQL Server Management studio - “Execute Stored Procedure” for User Defined Table Types?
[英]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.