Базы данныхИнтернетКомпьютерыОперационные системыПрограммированиеСетиСвязьРазное
Поиск по сайту:
Подпишись на рассылку:

Назад в раздел

SP_MSForeachtable или жизнь без курсоров

SP_MSForeachtable или жизнь без курсоров leftmargin=0 rightmargin=0 topmargin=0 bottommargin=0 marginheight=0 marginwidth=0

SP_MSForeachtable или жизнь без курсоров

По материалам статьи Brian Knight "SP_MSForeachtable - Life Without Cursors"
http://www.sqlservercentral.com/columnists/bknight/sp_msforeachtable.asp

Многие задачи, по привычке, решаются с помощью курсоров. Однако, в глубинах базы данных master скрыт ряд хранимых процедур, которые могут заменить некоторые курсоры. Курсоры все еще будут использоваться, но новые возможности позволят Вам уделять больше времени непосредственно для разработки.
Например, по традиции, если бы Вы захотите выполнить DBCC CHECKTABLE для каждой таблицы в базе данных, Вы можете написать сложный курсор, подобный представленному ниже:

DECLARE @dataname varchar(255),
@dataname_header varchar(255)

DECLARE datanames_cursor CURSOR FOR SELECT name FROM master..sysdatabases
WHERE name not in ('master', 'pubs', 'tempdb', 'model')
OPEN datanames_cursor
FETCH NEXT FROM datanames_cursor INTO @dataname
IF (@@fetch_status = 0)
BEGIN
SELECT @dataname_header = "Database " + RTRIM(UPPER(@dataname))
PRINT @dataname_header
SELECT @dataname_header = RTRIM(UPPER(@dataname))
EXEC ("DBCC CHECKDB " + "(" + @dataname + ")")
END
CLOSE datanames_cursor
DEALLOCATE datanames_cursor

Начинаясь с версии 6.5 SQL Server, Микрософт ввёл хранимую процедуру, называемую sp_MSreachfortable. Используя символ вопроса как указатель на список всех имён таблиц, процедура будет делать то же самое, что и вышеупомянутый курсор, но будет умещаться только в одну строку. Вы можете заменять курсор следующей командой:

sp_MSforeachtable @command1="print '?' dbcc checktable ('?')"

Вы можете использовать до трех команд в этой хранимой процедуре, используя @command1, @command1 и @command3.

Перевод: Александр Гладченко  2001г.



  • Главная
  • Новости
  • Новинки
  • Скрипты
  • Форум
  • Ссылки
  • О сайте




  • Emanual.ru – это сайт, посвящённый всем значимым событиям в IT-индустрии: новейшие разработки, уникальные методы и горячие новости! Тонны информации, полезной как для обычных пользователей, так и для самых продвинутых программистов! Интересные обсуждения на актуальные темы и огромная аудитория, которая может быть интересна широкому кругу рекламодателей. У нас вы узнаете всё о компьютерах, базах данных, операционных системах, сетях, инфраструктурах, связях и программированию на популярных языках!
     Copyright © 2001-2024
    Реклама на сайте