2012-03-07 97 views
2

我正在使用sql server 2008执行从数据库表返回的存储过程

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

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

存储过程类似,都具有select语句。在这个select语句中返回的数据我想插入到数据库表中。

伪代码如下所示:

INSERT INTO MyTable 
EXECUTE sp_executesql SELECT StoredProcedureName FROM Table 

任何人能帮助我正确的SQL为achieveing以上?

回答

1

sp_executesql接受unicode字符串而不是tsql语句。所以你需要像这样执行你的程序:

execute sp_executesql 'execute ' + @storedprocedurename 

它将执行一个单独的程序。

您需要编写一些迭代过程来填充源表中的@storedprocedurename变量。

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;