假设我有一个存储过程:
exec my_sp ?,?
我可以通过添加两个值来执行这个存储过程,例如
exec my_sp 'value 1','value 2'
现在这就是事情变得棘手的地方......
例如我有一张 table
1 | 2
aa bb
cc dd
等等……
现在我想传递我的表值并创建一个结果表,例如
exec my_sp 'aa','bb'
exec my_sp 'cc','dd'
等等…………
我怎样才能做到这一点?
最佳答案
我建议您更改程序以接受表类型
作为输入参数而不是变量
。
然后您可以一次性将表中的所有值传递给过程,并完成过程中所有行的操作。
创建表类型
Create type my_sp_param as table (col1 varchar(2),col2 varchar(2))
改变程序
Alter procedure my_sp (@param my_sp_param)
as
..
调用表类型输入的过程
declare @param my_sp_param
insert into @param (col1,col2)
select [1],[2] from yourtable
exec my_sp @param
如果您无法更改过程,则必须使用 CURSOR 或 WHILE 循环将每一行作为输入传递给您的过程,强烈不建议这样做。
关于sql - T SQL - 通过存储过程传递表变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35607875/