Я написал модуль Perl, который позволяет мне делать это и многое другое. С его помощью я могу манипулировать представлениями / sprocs (и кодом Perl) с помощью операторов SQL. #! / Usr / bin / perl
#
использовать Codebase;
использовать строгое;
используйте предупреждения;
Codebase::CreateFunctions(change=>\&change);
exit;
sub change {
my $ string = shift;
my %H=(
23 => 30,
25 => 26,
27 => 30,
28 => 30,
29 => 30,
31 => 24,
32 => 24
);
$string =~ s/InstallStatus *(<>|==|>=|<=|>|=|<) *(23|25|27|28|29|31|32)(\W)/"iNstallsTatus $1 $H{$2}$3"/iges;
return $string;
} # change
END
выберите имя (records.fullname) || расширение (records.fullname) в качестве имени, grep (m / \ W (23 | 25 | 27 | 28 | 29 | 31 | 32 | InstallStatus | InstallStatusNew | InstallStatusOld) \ W /, объекты .definition, 3) как ЛИСТИНГ
из записей
внутренние объекты объединения на записи .OId = objects.OId
где (путь (records.fullname) в ('BETA: /') и records.kind = 'view')
и (((определение объектов. как m / \ W (TRACKING) \ W /) и (определение объектов. как m / \ WInstallStatus (\ W | \ s) /))
или ((определение объектов. как m / \ W (TRACKING_LOG) \ W /) и (определение объектов. как m / \ WInstallStatus (New | OLD) (\ W | \ s) /)))
предел 10
select name(entries.fullname)||extension(entries.fullname) as Name, change(objects.definition) as FILE
from entries
inner join objects on entries.OId = objects.OId
where (path(entries.fullname) in ('BETA:/') and entries.kind = 'view')
and (((objects.definition like m/\W(TRACKING)\W/) and (objects.definition like m/\WInstallStatus(\W|\s)/))
or ((objects.definition like m/\W(TRACKING_LOG)\W/) and (objects.definition like m/\WInstallStatus(New|OLD)(\W|\s)/)))
and (change(objects.definition) <> objects.definition)
limit 10
`