执行从数据库表返回的存储过程

时间:2012-03-07 00:30:14

标签: sql sql-server sql-server-2008 stored-procedures

我正在使用sql server 2008

我有一个数据库表,其中包含一个包含存储过程名称的列。

我想查询返回存储过程名称列表的数据库表,然后执行它们。

存储过程类似,都具有select语句。我希望将此select语句中返回的数据插入到数据库表中。

伪代码如下所示:

INSERT INTO MyTable
EXECUTE sp_executesql SELECT StoredProcedureName FROM Table

任何人都可以帮助我使用正确的sql来实现上述目标吗?

2 个答案:

答案 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;