powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / DBMS_METADATA не дорабатывает
7 сообщений из 7, страница 1 из 1
DBMS_METADATA не дорабатывает
    #39864698
rost.slv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.
Я пытаюсь получить скрипт создания таблицы с помощью процедуры и metadat`ы, скрипт таблицы получается полностью, но триггер выдает с косяками:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
create or replace procedure table_replace(v_scheme_from in varchar2
                                         ,v_scheme_to   in varchar2
                                         ,v_table_from  in varchar2) as
begin
  dbms_output.put_line(lower(replace(replace(dbms_metadata.get_ddl(object_type => 'TABLE',
                                                                   name        => v_table_from,
                                                                   schema      => v_scheme_from),
                                             v_scheme_from,
                                             v_scheme_to),
                             '"',
                             '')));
  dbms_output.put_line(lower(replace(replace(dbms_metadata.get_dependent_ddl(object_type        => 'TRIGGER',
                                                                             base_object_name   => v_table_from,
                                                                             base_object_schema => v_scheme_from),
                                             '"',
                                             ''),
                                     v_scheme_from,
                                     v_scheme_to)));
end;



Результат триггера:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
create or replace editionable trigger v_scheme_to.rbi_bb_task_trg --само название триггера поменялось, но
  before insert on v_scheme_from.bb_task_tbl --название таблицы нет!
  for each row
begin
  if inserting and
     :new.id_task is null
  then
    select ***.nextval
      into :new.id_task
      from dual;
  end if;
end;



Я подозреваю, что это связанно с тем, что после вызова процедуры строки представляются как "V_SCHEME_FROM" а не V_SCHEME_FROM, в первой строчке создания триггера DBMS_METADATA изначально выдает именно "V_SCHEME_FROM" (без использования REPLACE), а во второй строчке V_SCHEME_FROM, и по этому REPLACE просто не видит что ему во второй строчке тоже надо что то поменять.

Вопрос: как это исправить?)
...
Рейтинг: 0 / 0
DBMS_METADATA не дорабатывает
    #39864711
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rost.slvЯ подозреваюТы бредишь.
rost.slvкак это исправить?Включить мозг.

http://www.bugtraq.ru/forum/faq/general/smart-questions.html] RTFM
...
Рейтинг: 0 / 0
DBMS_METADATA не дорабатывает
    #39864735
rost.slv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Elic, извините, я хочу пообщаться с адекватными людьми, без признаков )
Всего хорошего)
...
Рейтинг: 0 / 0
DBMS_METADATA не дорабатывает
    #39864741
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rost.slv,

И что мешает получить отдельно get_dependent и проверить свою гипотезу?
...
Рейтинг: 0 / 0
DBMS_METADATA не дорабатывает
    #39864744
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Уберите реплейсы
2. Уберите lower.
Смотрите что получаете.
К полученной строке применяете свои реплейсы.
Печалитесь, тренируетесь.
А затем просто выбрасываете эту недоподелку и идете учить матчасть.
В частности: что такое идентификаторы, какие они бывают, как записываются, зачем нужны двойные кавычки и почему их нельзя удалять представленным способом.
Затем: изучаете интерфейс dbms_metadata не предмет более подходящего для автоматизации представления DDL (хинт: это XML)
...
Рейтинг: 0 / 0
DBMS_METADATA не дорабатывает
    #39864748
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymousК полученной строке применяете свои реплейсы.Зачем?
...
Рейтинг: 0 / 0
DBMS_METADATA не дорабатывает
    #39864750
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-2-andrey_anonymousК полученной строке применяете свои реплейсы.Зачем?
Чтобы потренироваться в поиске багов в самописном коде :)
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / DBMS_METADATA не дорабатывает
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]