Главная > Без рубрики > Программирование::SQL Server::SP_MSForeachtable или жизнь без курсоров

Программирование::SQL Server::SP_MSForeachtable или жизнь без курсоров

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г.

sp_MSforeachtable @command1=’TRUNCATE TABLE ?’ - очистить все таблицы в базе

Добавить в избранное:
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google Bookmarks

Смотрите также:

  1. IT::Программирование::TSQL::Список таблиц в БД MS SQL
  2. Рабочее::SQL отчет
  3. Рабочее::Текущее::SQL
  4. Рабочее::SQL Запросик
  5. Программирование::SQL Server 2005::SQL

Categories: Без рубрики Tags:
  1. Пока что нет комментариев.
  1. Пока что нет уведомлений.
Необходимо войти на сайт, чтобы написать комментарий.