Sql 如何使用游标从表中执行存储过程?

Sql 如何使用游标从表中执行存储过程?,sql,sql-server,tsql,stored-procedures,Sql,Sql Server,Tsql,Stored Procedures,我想从表中执行一个存储过程,如果它成功运行,则运行下一个过程。表中有50个存储过程,有些需要每天执行,有些需要每周和每月执行 我已经这样做了,但它不起作用。如有任何帮助或建议,将不胜感激 DECLARE @ProcFreq int DECLARE @ProcName varchar(100) DECLARE cur CURSOR FOR SELECT ProcFreq, ProcName FROM @temp OPEN cur FETCH NEXT FROM cur INTO @ProcFr

我想从表中执行一个存储过程,如果它成功运行,则运行下一个过程。表中有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

你能不能对不工作再含糊一点?是否要使用参数值@ProcName执行存储过程mysp,而忽略@ProcFreq?mysp的作用是什么?你能给我看一下代码吗?我被这段代码卡住了,我不知道下一步该怎么做。如果频率是“每日”,它会执行;如果频率是“每月”,它会在每个月的第一个月或列中给定的日期运行。如果frequency说是daily,它将执行这个过程,并将运行时间和日期放在下一列。@Justin我有一个答案,但你上面的评论完全推翻了我的帖子。您没有声明或定义@temp吗?如果您将@ProcFreq声明为int,那么@ProcFreq怎么可能是具有“daily”、“monthly”值的字符串?总的来说,您是有条件地以迭代方式运行50个不同的存储过程,还是在存储过程中运行mysp?在这种情况下,不需要动态sql,exec@procname完全可以。
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