Sql server 2008 SQL Server的游标替换

Sql server 2008 SQL Server的游标替换,sql-server-2008,tsql,cursor,Sql Server 2008,Tsql,Cursor,我有两种情况需要用set操作替换游标 我想知道是否有人对此有任何想法。我有麻烦了 我有一个表,其中包含触发器的名称及其相关的表。我需要禁用或启用它们,目前它正在使用游标循环并调用 disable trigger enable trigger 有没有一种方法可以通过传递一组数据来调用这些函数 我有一个临时表被插入到类似的程序中 光标用于保存一组数据,并逐行拉出@name insert into @Tmp(name) exec usp_here @name, @value -- this

我有两种情况需要用set操作替换游标

我想知道是否有人对此有任何想法。我有麻烦了

  • 我有一个表,其中包含触发器的名称及其相关的表。我需要禁用或启用它们,目前它正在使用游标循环并调用

    disable trigger 
    
    enable trigger 
    
    有没有一种方法可以通过传递一组数据来调用这些函数

  • 我有一个临时表被插入到类似的程序中 光标用于保存一组数据,并逐行拉出@name

    insert into @Tmp(name)
    exec usp_here @name, @value  -- this returns a single column 
    
  • --更新--

    我从存储过程中取出查询,使用CTE而不是游标,并直接连接到它。这是一种选择。还有其他的吗?

    整个过程是作为作业运行还是通过一个命令运行

    可以运行一个命令来设置第二步吗

    如果是这样,您可以这样做:

    要启用:

    select 'enable trigger ' + [the trigger name] + ' on ' + [the object name]
    from [your table]
    where [how you identify the triggers]
    
    -或

    要禁用:

    select 'disable trigger ' + [the trigger name] + ' on ' + [the object name]
    from [your table]
    where [how you identify the triggers]
    

    这些将为您提供启用或禁用触发器所需的所有命令的列表。您可以将其输出到sql文件,或者将输出复制并粘贴到新的查询窗口,然后运行它。

    它现在位于存储过程中,逐行运行以启用或禁用。但我正试图让它更基于集合,我是用sp_executesql来执行这些命令的。