我正在使用sql server 2008
我有一个数据库表,其中包含一个包含存储过程名称的列。
我想查询返回存储过程名称列表的数据库表,然后执行它们。
存储过程类似,都具有select语句。我希望将此select语句中返回的数据插入到数据库表中。
伪代码如下所示:
INSERT INTO MyTable
EXECUTE sp_executesql SELECT StoredProcedureName FROM Table
任何人都可以帮助我使用正确的sql来实现上述目标吗?
答案 0 :(得分:1)
sp_executesql接受unicode字符串而不是tsql语句。所以你需要像这样执行你的程序:
execute sp_executesql 'execute ' + @storedprocedurename
将执行单个程序。
您需要编写一些迭代过程来填充源表中的@storedprocedurename变量。
答案 1 :(得分:1)
这与@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;