2016-03-13 26 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'绝对没问题。 –

相关问题