Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Oracle |
![]() ![]() |
ilyuha111 Member Откуда: Сообщений: 40 |
Добрый день есть некий фал *.sql с набором различных DDL команд create table T_WEB_ORDER_HEAD ( web_order_head_id NUMBER not null, date_insert DATE, ret_date_order VARCHAR2(500), ret_order_id VARCHAR2(500), partner_make_id VARCHAR2(500), partner_delivery_id VARCHAR2(500), web_order_source VARCHAR2(500), web_order_number VARCHAR2(500), ret_people_name VARCHAR2(500), ret_people_phone VARCHAR2(500), asna_pay_type_name VARCHAR2(500), asna_pay_type_id VARCHAR2(500), ret_discount_doc_number VARCHAR2(500), is_asna_econ NUMBER, is_asna_cooperative_id VARCHAR2(500), time_change_order VARCHAR2(200), external_system_id NUMBER not null, change_id NUMBER not null, ret_client_email VARCHAR2(100), ret_client_comment VARCHAR2(1000), ret_pharmacy_address VARCHAR2(1000), ret_client_address VARCHAR2(1000), rezerv_date VARCHAR2(100), with_transfer VARCHAR2(100), urgent_delivery VARCHAR2(100), product_sum VARCHAR2(100), delivery_price VARCHAR2(100), transfer_price VARCHAR2(100), price VARCHAR2(100), delivery_name VARCHAR2(100), delivery_id VARCHAR2(100), employ_id NUMBER, remote_partner_id NUMBER, comment_text VARCHAR2(1000) ); / -- Add comments to the columns comment on column T_WEB_ORDER_HEAD.date_insert is 'Дата вставки заказа'; comment on column T_WEB_ORDER_HEAD.ret_date_order is 'Дата создания заказа в системе'; comment on column T_WEB_ORDER_HEAD.ret_order_id is 'уникальный код заказа в системе'; comment on column T_WEB_ORDER_HEAD.partner_make_id is 'уникальный код аптеки, на которой сделан заказ в системе'; comment on column T_WEB_ORDER_HEAD.partner_delivery_id is 'уникальный код аптеки, которая выдает заказ в системе'; comment on column T_WEB_ORDER_HEAD.web_order_source is 'источник заказа (телефон, почта и т.п.)'; comment on column T_WEB_ORDER_HEAD.web_order_number is 'номер заказа в системе'; comment on column T_WEB_ORDER_HEAD.ret_people_name is 'имя покупателя из системы'; comment on column T_WEB_ORDER_HEAD.ret_people_phone is 'номер телефона из системы'; comment on column T_WEB_ORDER_HEAD.asna_pay_type_name is 'тип оплаты (АСНА) из системы'; comment on column T_WEB_ORDER_HEAD.asna_pay_type_id is ' ИД типа оплаты по справочнику АСНА из системы'; comment on column T_WEB_ORDER_HEAD.ret_discount_doc_number is 'дисконтная карта из системы'; comment on column T_WEB_ORDER_HEAD.is_asna_econ is 'признак АСНА-Экономия (0 - нет, 1 - да)'; comment on column T_WEB_ORDER_HEAD.is_asna_cooperative_id is 'ИД совместной покупки (АСНА)'; comment on column T_WEB_ORDER_HEAD.time_change_order is 'Дата изменения'; comment on column T_WEB_ORDER_HEAD.external_system_id is 'Код системы заказа'; comment on column T_WEB_ORDER_HEAD.ret_client_email is 'email из системы'; comment on column T_WEB_ORDER_HEAD.ret_client_comment is 'Комментарий клиента из системы'; comment on column T_WEB_ORDER_HEAD.ret_pharmacy_address is 'Адрес аптеки на который был создан заказ из системы'; comment on column T_WEB_ORDER_HEAD.ret_client_address is 'Адрес клиента из системы'; comment on column T_WEB_ORDER_HEAD.employ_id is 'Ссылка на исполнителя'; comment on column T_WEB_ORDER_HEAD.remote_partner_id is 'Ссылка на аптеку для обменов'; / -- Create/Recreate primary, unique and foreign key constraints alter table T_WEB_ORDER_HEAD add constraint PK_WEB_ORDER_HEAD_ID primary key (WEB_ORDER_HEAD_ID); alter table T_WEB_ORDER_HEAD add constraint FK_WEB_HEAD_TO_EXT_SYS_ID foreign key (EXTERNAL_SYSTEM_ID) references T_EXTERNAL_SYSTEMS (EXTERNAL_SYSTEM_ID) novalidate; alter table T_WEB_ORDER_HEAD add constraint FK_WOH_EMP foreign key (EMPLOY_ID) references T_EMPLOY (EMPLOY_ID); / -- Create sequence create sequence sq_web_order_head_id minvalue 1 maxvalue 9999999999999999999 start with 1 increment by 1; / CREATE OR REPLACE TRIGGER tr_web_order_head_biu before insert or update on T_WEB_ORDER_HEAD for each row declare begin if :new.web_order_head_id is null then select sq_web_order_head_id.nextval into :new.web_order_head_id from dual; end if; :new.remote_partner_id := pk_system.GetMyPartnerID; select f_ret_change_id into :new.change_id from dual; end tr_web_order_head_biu; / ......... храниться в поле клоб в базе необходимо разбить этот файл на отдельные команды. чтобы выполнить через execute immediate по одной пробовал такой командой но криво выгружает триггеры и пакеты select to_char(regexp_substr(blob_field, '[^/;]+', 1, level) ) from T_DDL_BLOB_test t CONNECT BY level <100 если у кого-то опыт подобной работы ? |
28 ноя 18, 13:50 [21747320] Ответить | Цитировать Сообщить модератору |
-2- Member Откуда: Сообщений: 14342 |
Но, поскольку это что-то наколеночное, то не факт, что оно достаточно продумано для автоматического применения. |
||
28 ноя 18, 14:55 [21747453] Ответить | Цитировать Сообщить модератору |
SY Member Откуда: Middlebury, CT USA Сообщений: 9338 |
Для начала - скрипт кривой. Как ты думаешь что будет при выполнении скажем:-- Create sequence create sequence sq_web_order_head_id minvalue 1 maxvalue 9999999999999999999 start with 1 increment by 1; / SY. |
28 ноя 18, 15:08 [21747485] Ответить | Цитировать Сообщить модератору |
-2- Member Откуда: Сообщений: 14342 |
|
||
28 ноя 18, 15:19 [21747505] Ответить | Цитировать Сообщить модератору |
orawish Member Откуда: Гадюкино-2 (City) Сообщений: 15440 |
.. если поделка приличная, то делась по мотивам синтаксиса таки sqlplus'а , а значит и вероятно ожидать схожего поведения |
||||
28 ноя 18, 16:53 [21747643] Ответить | Цитировать Сообщить модератору |
-2- Member Откуда: Сообщений: 14342 |
Интерактивное выполнение скрипта пропускает лишние слешы: СКРИПТ set echo on select 1 from dual; / create table xxx31 (n number); / drop table xxx31 purge; РЕЗУЛЬТАТ SQL> select 1 from dual; 1 ---------- 1 SQL> / SQL> create table xxx31 (n number); Table XXX31 created. SQL> / SQL> drop table xxx31 purge; Table XXX31 dropped. |
||
28 ноя 18, 17:06 [21747657] Ответить | Цитировать Сообщить модератору |
orawish Member Откуда: Гадюкино-2 (City) Сообщений: 15440 |
-2-, да уж.. ожидать схожего поведения можно, но ожидать - не значит дождаться |
28 ноя 18, 17:14 [21747675] Ответить | Цитировать Сообщить модератору |
orawish Member Откуда: Гадюкино-2 (City) Сообщений: 15440 |
ilyuha111, разделителей используйте не оба, а один / в таком случае вы разделите файл на команду_или_группу_команд а дальнейший разбор группы_команд на отдельные команды не факт,что вообще вам нужен |
28 ноя 18, 17:23 [21747683] Ответить | Цитировать Сообщить модератору |
ilyuha111 Member Откуда: Сообщений: 40 |
Добрый день один разделитель отлично работает когда в скрипте нет триггеров или пакетов вопрос можно ли регулярным вырождением это вцепить |
||
29 ноя 18, 14:23 [21748610] Ответить | Цитировать Сообщить модератору |
-2- Member Откуда: Сообщений: 14342 |
|
||||
29 ноя 18, 14:35 [21748629] Ответить | Цитировать Сообщить модератору |
Все форумы / Oracle | ![]() |