2016-03-13 66 views
-2

我想從表中執行一個存儲過程,如果它成功運行,則運行下一個過程。表中有50個存儲過程,有些需要每天執行,有些需要每週和每月執行一次。如何使用遊標從表中執行存儲過程?

我已經這樣做,但它不工作。任何幫助或建議,將不勝感激。

DECLARE @ProcFreq int 
DECLARE @ProcName varchar(100) 

DECLARE cur CURSOR FOR SELECT ProcFreq, ProcName FROM @temp 
OPEN cur 

FETCH NEXT FROM cur INTO @ProcFreq, @ProcName 

WHILE @@FETCH_STATUS = 0 BEGIN 
    EXEC @ProcName 

    FETCH NExT FROM cur INTO @ProcFreq, @ProcName 
END 

CLOSE cur  
DEALLOCATE cur 
+0

你能多一點含糊其辭「不工作」?你想用參數值「@ ProcName」執行存儲過程'mysp',而不考慮'@ ProcFreq'嗎? – HABO

+0

mysp是做什麼的?你能顯示代碼嗎? – Squirrel

+0

我被困在這段代碼中,我不知道如何做下一步。 – Justin

回答

1
DECLARE @ProcFreq int 
DECLARE @ProcName varchar(100), 
DECLARE @Sql nvarchar(100) 

DECLARE cur CURSOR FOR SELECT ProcFreq, ProcName FROM @temp 
OPEN cur 

FETCH NEXT FROM cur INTO @ProcFreq, @ProcName 

WHILE @@FETCH_STATUS = 0 
BEGIN 
    SET @Sql = 'EXEC ' + @ProcName 
    exec sp_executesql @Sql 
    FETCH NExT FROM cur INTO @ProcFreq, @ProcName 
END 

CLOSE cur  
DEALLOCATE cur 
+2

在這種情況下,動態sql不是必需的,'exec @ procname'絕對沒問題。 –

相關問題