SQL - 对表中的所有值执行存储过程

dop*_*ner 2 sql sql-server stored-procedures

我有一个SQL存储过程'A',它验证给定帐户的某些银行帐户信息,并接受帐号作为参数'arg1'

我想对另一个表XXX的列X中存在的所有值执行该过程(Accounts表中存在的所有银行帐户)

我不确定这样的事情是否有效

exec A @arg1 = X from XXX
Run Code Online (Sandbox Code Playgroud)

提前致谢!

Ric*_*iwi 11

没有你想要运行它的批量EXEC.

选项1:手动生成和运行.复制结果,粘贴回SSMS并执行.

select 'exec A @arg1 = ' + quotename(X,'''') + ';'
from XXX
Run Code Online (Sandbox Code Playgroud)

选项2:生成批处理并使用动态SQL运行.

declare @sql nvarchar(max);
set @sql = '';
select @sql = @sql + 'exec A @arg1 = ' + quotename(X,'''') + ';'
from XXX;
exec (@sql);
Run Code Online (Sandbox Code Playgroud)

选项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;
Run Code Online (Sandbox Code Playgroud)