powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Разбить файл клоб на отбельные pl/sql коамнды
10 сообщений из 10, страница 1 из 1
Разбить файл клоб на отбельные pl/sql коамнды
    #39739756
ilyuha111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день
есть некий фал *.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

если у кого-то опыт подобной работы ?
...
Рейтинг: 0 / 0
Разбить файл клоб на отбельные pl/sql коамнды
    #39739831
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ilyuha111хранитьсяЕсли бы это был sqlplus-скрипт, то dbms_scheduler. В 12.1 случайно включили dbms_sqlplus_script, но в 12.2 выпилили.
Но, поскольку это что-то наколеночное, то не факт, что оно достаточно продумано для автоматического применения.
...
Рейтинг: 0 / 0
Разбить файл клоб на отбельные pl/sql коамнды
    #39739851
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для начала - скрипт кривой. Как ты думаешь что будет при выполнении скажем:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
-- Create sequence 
create sequence sq_web_order_head_id
minvalue 1
maxvalue 9999999999999999999
start with 1
increment by 1;
/



SY.
...
Рейтинг: 0 / 0
Разбить файл клоб на отбельные pl/sql коамнды
    #39739864
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SYДля начала - скрипт кривой.Автор не заявлял, что это скрипт sqlplus'а. Вероятно этот скрипт используется в какой-нибудь поделке.
...
Рейтинг: 0 / 0
Разбить файл клоб на отбельные pl/sql коамнды
    #39739945
Фотография orawish
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-2-SYДля начала - скрипт кривой.Автор не заявлял, что это скрипт sqlplus'а. Вероятно этот скрипт используется в какой-нибудь поделке.
.. если поделка приличная, то делась по мотивам синтаксиса таки sqlplus'а , а значит и вероятно ожидать схожего поведения
...
Рейтинг: 0 / 0
Разбить файл клоб на отбельные pl/sql коамнды
    #39739956
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
orawishесли поделка приличная, то делась по мотивам синтаксиса таки sqlplus'аOracle SQL Developer за приличную поделку сойдет?
Интерактивное выполнение скрипта пропускает лишние слешы:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
 СКРИПТ
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.
...
Рейтинг: 0 / 0
Разбить файл клоб на отбельные pl/sql коамнды
    #39739968
Фотография orawish
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-2-,

да уж..
ожидать схожего поведения можно, но ожидать - не значит дождаться
...
Рейтинг: 0 / 0
Разбить файл клоб на отбельные pl/sql коамнды
    #39739975
Фотография orawish
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ilyuha111,

разделителей используйте не оба, а один /

в таком случае вы разделите файл на команду_или_группу_команд
а дальнейший разбор группы_команд на отдельные команды
не факт,что вообще вам нужен
...
Рейтинг: 0 / 0
Разбить файл клоб на отбельные pl/sql коамнды
    #39740373
ilyuha111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
orawishilyuha111,

разделителей используйте не оба, а один /

в таком случае вы разделите файл на команду_или_группу_команд
а дальнейший разбор группы_команд на отдельные команды
не факт,что вообще вам нужен


Добрый день
один разделитель отлично работает когда в скрипте нет триггеров или пакетов
вопрос можно ли регулярным вырождением это вцепить
...
Рейтинг: 0 / 0
Разбить файл клоб на отбельные pl/sql коамнды
    #39740381
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ilyuha111один разделитель отлично работает когда в скрипте нет триггеров или пакетов У тебя недостаточно компетенций судить о прекрасностях.
ilyuha111вырождениемРегулярки лишь малая часть лексических парсеров.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Разбить файл клоб на отбельные pl/sql коамнды
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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