TSQL Cursor как проверить, если он уже объявлен и таким образом деаллоцировать

Как я могу убедиться, что я удаляю курсор, если он уже существует, прежде чем я попытаюсь открыть его снова?

Для таблицы я могу использовать что-то вроде:

if exists (select top 1 from tempdb.sys.tables where name = '##tmpTable') 
    drop table ##tmpTable;  
... then I can recreate my ##tmpTable 

Но я не могу понять, как это сделать для курсора, например

-- First clean up if already exists..
  .....                                  <----- what goes here???

-- Declare and use a cursor
DECLARE  someCursorName CURSOR 
 FOR 
  select something from somewhere
 FOR READ ONLY

Я делаю это, чтобы убедиться, что мой скрипт очищается перед началом работы

Лучшее, что я могу придумать, это :

begin try DEALLOCATE someCursorName ; end try begin catch end catch

Это хорошая практика?

EDIT: Это скрипт обслуживания. В наших базах данных, созданных по заказу клиентов, может быть много таблиц, и курсор используется для выполнения статистического анализа по всем таблицам - в зависимости от типов таблиц происходят разные вещи. В общем, много динамического sql. Если сценарий не работает, я хотел бы иметь возможность повторить работу, не беспокоясь о ручном вмешательстве. Здесь есть только один уровень охвата.

Как и все вещи, я буду рад заменить курсоры операциями set. Вот что делают циклы курсоров:

  • строят sql для переформирования/перестройки индексов (первоначально был ручной sql для определения DDL для запуска, а затем DDL был выпущен)
  • анализ разброса данных и ошибок в различных таблицах
  • поиск ошибок в журналах и поиск соответствующих таблиц и захват этих данных (первоначально был ручной sql для определения мест, где были ошибки, а затем вырезать и вставить шаблон(ы) для поиска ошибок в зависимости от типов ошибок)
-... 121---1473084- Energy Usage Instruments - iOS Я пытаюсь измерить уровень потребления энергии с моего ipod, когда я запускаю свое приложение. Я импортирую данные с устройства в приложение Instruments, и уровень использования энергии отображается в виде гистограммы. Однако в ...

Я пытаюсь измерить уровень энергопотребления моего ipod, когда я запускаю свое приложение. Я импортирую данные с устройства в приложение Instruments, и уровень использования энергии отображается в виде гистограммы. Однако в панели подробностей Instruments уровень использования энергии не показывает никаких цифр, которые указывают на уровень энергии, используемой приложением на моем устройстве. Не знаете ли вы, как получить этот уровень энергопотребления? Я выполнил шаги, указанные в документации Instruments, чтобы получить отчет об использовании энергии с устройства iOS; мое устройство iOS - ipod touch 3G, и я использую Xcode 3.0. Спасибо!

5
задан airin 5 January 2012 в 04:23
поделиться