2012-03-07 54 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; 
相關問題