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

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

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

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

Вход

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


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

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

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

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

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
Материал прочитан: 18786 раз(а)
[ Назад ]



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

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