我有一个 SQL 存储过程 'A',它验证给定帐户的某些银行帐户信息,并接受帐号作为参数 'arg1'
我想对另一个表 XXX 的X 列 中存在的所有值执行该过程(账户表中存在的所有银行账户)
我不确定这样的事情是否可行
exec A @arg1 = X from XXX
提前致谢!
最佳答案
不,没有您想要运行它的批量 EXEC。
选项 1:手动生成和运行。复制结果,粘贴回 SSMS 并执行。
select 'exec A @arg1 = ' + quotename(X,'''') + ';'
from XXX
选项 2:生成批处理并使用动态 SQL 运行。
declare @sql nvarchar(max);
set @sql = '';
select @sql = @sql + 'exec A @arg1 = ' + quotename(X,'''') + ';'
from XXX;
exec (@sql);
选项 3:循环运行
declare @x varchar(max);
select top(1) @x = X from xxx where X is not null order by X;
while @@rowcount > 0
begin
exec sp_executesql N'exec A @arg1=@x;', N'@x varchar(max)', @x=@x;
select top(1) @x = X from xxx where X > @x order by X;
end;
关于SQL - 对表中的所有值执行存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13162397/