Форум FAQ О команде
Поиск по сайту:
 
Sybase
Sybase ASA  
Sybase ASE  
Sybase IQ  
Sybase PowerDesigner  
Sybase PowerBuilder  

Продукты
Наши продукты  
Продукты партнеров портала  

Сообщества
Alef community  

Меню
Регистрация  
Почта  

Вход

Рассылка
Рассылка 'РСУБД Sybase ASA 9 - мощность, легкость и надежность'
Почтовая рассылка
"Технологии обработки данных компании Sybase"


Статистика
Яндекс цитирования

Rambler's Top100
Находится в каталоге Апорт

Главная -> Полезный код
Поиск текста в обьектах БД

Поиск текста в обьектах БД

CREATE PROCEDURE "DBA"."sp_asc_ScriptFindText"(
  IN @WhereText long varchar,
  IN @Owner char(128) DEFAULT NULL
)
BEGIN
  DECLARE LOCAL TEMPORARY TABLE #Objects (
    TypeObject char(10) NOT NULL,
    Owner char(128) NOT NULL,
    Name char(255) NOT NULL,
    Script long varchar NULL,
    PCTFREE 0
  ) NOT TRANSACTIONAL;

  DECLARE @User_id unsigned int;

  IF @Owner IS NOT NULL
  THEN
    SET @User_id = User_id(@Owner);
  END IF;

  EXECUTE IMMEDIATE WITH RESULT SET ON '
    INSERT INTO #Objects (Owner, Name, TypeObject, Script)
      SELECT User_Name(Creator), Table_Name AS Name, ''View'' AS TypeObject, Source AS Script
      FROM sys.SysTable
      WHERE Table_Type = ''VIEW'' ' || IF @Owner IS NOT NULL THEN ' AND Creator = ' || @User_id ENDIF || ' AND (' || @WhereText || ')
      UNION ALL
      SELECT User_Name(Creator), Table_Name || ''.'' || Trigger_Name AS Name, ''Trigger'' AS TypeObject, trg.Source AS Script
      FROM sys.SysTrigger trg
        KEY JOIN sys.SysTable tbl
      WHERE Trigger_Name IS NOT NULL ' || IF @Owner IS NOT NULL THEN ' AND Creator = ' || @User_id ENDIF || 
            ' AND (' || @WhereText || ')
      UNION ALL
      SELECT User_Name(Creator), Proc_Name AS Name, ''Procedure'' AS TypeObject, Source AS Script
      FROM sys.SysProcedure
      WHERE (' || @WhereText || ')' || IF @Owner IS NOT NULL THEN ' AND Creator = ' || @User_id ENDIF;

  SELECT TypeObject, Owner, Name, 'ALTER ' || SubStr(Script, 8) AS Script
  FROM #Objects
  ORDER BY TypeObject, Name;
END;


Теперь можно найти в БД все обьекты, в которых есть упоминание Table1:
CALL "DBA"."sp_asc_ScriptFindText" (
  @WhereText = 'Script LIKE ''%Table1%''',
  @Owner = 'DBA'
);


P.S. Для выходящей 10-ой версии фукнции штатного поиска были включены в Sybase Central, так что после перехода на 10-ку пользователи ASA получат удобный и гибкий механизм поиска, причем не только в скриптах обьектов БД, но и в самих данных таблиц.


Дата публикации: Thursday 20 July 2006 11:18:28
Материал прочитан: 18040 раз(а)
[ Назад ]



Продвижение сайтов
Биржа ссылок

Copyright©2005 phpMS. Все права защищены.
hosted on pets-tree