gpt4 book ai didi

sql-server - 顺序执行 SQL Server 存储过程

转载 作者:行者123 更新时间:2023-12-03 02:46:53 24 4
gpt4 key购买 nike

我有一些关于在 SQL Server 中执行存储过程的案例。

也许这是不寻常的做法,但我已在表中存储了存储过程名称列表。该表大约是这样的(我们称之为 TableFoo):

| SPId |  SPName  |
-------------------
| 1 | spr_name1|
| 2 | spr_name2|
| 3 | spr_name3|
| 4 | spr_name4|
...

我想调用/执行从TableFoo上的查询结果生成的存储过程列表,查询如下:

SELECT SPName 
FROM TableFoo
WHERE SPId IN (1, 2, 3)

我想按行顺序执行存储过程

我的意思是我想这样做:)

SELECT EXEC(SpName)
FROM TableFoo
WHERE SPId IN (1, 2, 3)

但这不起作用

除了使用CURSOR之外还有什么解决方案吗?

提前致谢。

最佳答案

使用字符串聚合构建调用所有过程的单个批处理,然后运行该批处理。有许多字符串聚合连接方法,但最有效的一种是 XML blackbox method :

create table #test (spid int, sproc sysname);
insert into #test (spid, sproc) values (1, N'sproc1')
, (2, N'sproc2')
, (3, N'sproc3')
, (4, N'sproc4')
, (5, N'sproc5')
, (6, N'sproc6');

declare @sql nvarchar(max);
set @sql = (select N'exec ' + sproc +N';
' from #test
where spid in (1,3,5) for XML path(''), type).value(N'.', 'nvarchar(max)');

exec sp_executesql @sql;

关于sql-server - 顺序执行 SQL Server 存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11063923/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com