【问题标题】:execute stored procedures returned from database table执行从数据库表返回的存储过程
【发布时间】:2012-03-07 00:30:13
【问题描述】:
我正在使用 sql server 2008
我有一个数据库表,其中有一列包含存储过程名称。
我想查询返回存储过程名称列表的数据库表,并执行它们。
存储过程都类似,都有一个 select 语句。这条选择语句中返回的数据我想插入到数据库表中。
伪代码如下所示:
INSERT INTO MyTable
EXECUTE sp_executesql SELECT StoredProcedureName FROM Table
谁能帮助我用正确的 sql 来实现上述目标?
【问题讨论】:
标签:
sql
sql-server
sql-server-2008
stored-procedures
【解决方案1】:
sp_executesql 接受 unicode 字符串而不是 tsql 语句。所以你需要像这样执行你的程序:
execute sp_executesql 'execute ' + @storedprocedurename
它将执行单个过程。
您需要编写一些迭代过程来填充源表中的@storedprocedurename 变量。
【解决方案2】:
这与 @Coltech 仅使用光标回答几乎相同。
DECLARE @spname VARCHAR(200)
DECLARE @sql VARCHAR(1000)
DECLARE your_cursor CURSOR FOR
SELECT spname
FROM yourTable;
OPEN your_cursor;
FETCH NEXT FROM your_cursor
INTO @spname;
WHILE @@FETCH_STATUS = 0
BEGIN
SET @sql = 'EXEC ' + @spname
execute sp_executesql @sql
FETCH NEXT FROM your_cursor
INTO @spname;
END
CLOSE your_cursor;