2013-07-07 3 views
0

У меня есть 2 сценария. Вместо этого мне нужно заменить курсоры на заданную операцию.Замена курсора для SQL Server

Мне нужно знать, есть ли у кого-нибудь идеи по этому поводу. У меня проблемы.

  1. У меня есть таблица, содержащая имена триггеров и таблицы, к которой она относится. Мне нужно, чтобы отключить или включить их и в настоящее время он использует курсор Переберите и вызвать

    disable trigger 
    
    enable trigger 
    

    Есть ли способ вызвать их прохождения набора данных?

  2. У меня есть временная таблица, вставляемая в как Курсор используется для хранения набора данных, а @name вытягивается по строкам.

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

- Обновление -
Я вытащил запрос из хранимой процедуры и использовать CTE вместо курсора и присоединился к нему напрямую. Это был один из вариантов. Есть ли другие?

ответ

0

Выполняется ли весь этот процесс как задание или выполняется из одной команды?

Можно ли запустить одну команду для установки второго шага?

Если да, то вы могли бы сделать что-то вроде этого:

Для включения:

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 или скопировать и вставить вывод в новые окна запросов, а затем запустить его.

+0

В настоящее время он находится внутри хранимой процедуры, запуская строку за строкой, чтобы включить или отключить. но я пытаюсь сделать его более основанным на наборе. – DavieDave

+0

Я сделал это вместе с sp_executesql для выполнения команд. – DavieDave

Смежные вопросы