Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / вывод текста процедуры в файл / 24 сообщений из 24, страница 1 из 1
26.12.2017, 13:49
    #39576086
xomjakoff
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вывод текста процедуры в файл
Добрый день всем!
Честно говоря, я человек еще только начинающий программировать на SQL, так что прошу заранее простить, если мой вопрос покажется странным.
Допустим, у нас есть процедура (реальная процедура намного больше max размера переменной (4000), поэтому рассматриваю на простом примере):

declare
v_cnt number;
begin
select 5 into v_cnt from dual;
dbms_output.put_line ('Искомый номер: '||v_cnt);
end;

Эта процедура запускается в web-интерфейсе, но требуется не выполнение самой процедуры, а формирование текстового документа с текстом этой самой процедуры на выходе.
Вопрос: как это лучше всего сделать?
...
Рейтинг: 0 / 0
26.12.2017, 13:57
    #39576100
вывод текста процедуры в файл
xomjakoff,

нужен текст процедуру? читай про dbms_metadata.get_ddl
...
Рейтинг: 0 / 0
26.12.2017, 13:59
    #39576102
AmKad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вывод текста процедуры в файл
xomjakoff,

Какую задачу ты решаешь?
...
Рейтинг: 0 / 0
26.12.2017, 14:07
    #39576110
xomjakoff
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вывод текста процедуры в файл
AmKad,

я же написал. Есть процедура. Есть web-интерфейс, связанный с этой процедурой. При нажатии на кнопочку в интерфейсе "сформировать скрипт", формируется текстовый файл с текстом процедуры внутри.
Желательно, чтобы вместо всяких блоков с IF, переменных и данных из темповой таблицы, в insertы подставлялись конечные значения.
Т.е. в идеале мне не "рыбу" этой процедуры нужно, а скрипт под конкретные параметры.
...
Рейтинг: 0 / 0
26.12.2017, 14:10
    #39576116
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вывод текста процедуры в файл
xomjakoffТ.е. в идеале мне не "рыбу" этой процедуры нужно, а скрипт под конкретные параметры. http://www.bugtraq.ru/forum/faq/general/smart-questions.html] RTFM
...
Рейтинг: 0 / 0
26.12.2017, 14:21
    #39576132
xomjakoff
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вывод текста процедуры в файл
Добрый Э - Эх,

спасибо, но насколько я понял этот пакет служит для выборки метаданных.
Здесь все проще. Пользователь запускает в web-интерфейсе формирование скрипта. Полученный скрипт тестируется. Если все ОК, этот файл отдается для применения на продуктивной схеме
...
Рейтинг: 0 / 0
26.12.2017, 14:25
    #39576137
dmdmdm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вывод текста процедуры в файл
xomjakoffнасколько я понял этот пакет служит для выборки метаданных.

Проверьте и поймете.
...
Рейтинг: 0 / 0
26.12.2017, 14:34
    #39576147
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вывод текста процедуры в файл
xomjakoffЗдесь все проще. Пользователь запускает в web-интерфейсе формирование скрипта. Полученный скрипт тестируется. Если все ОК, этот файл отдается для применения на продуктивной схемеУжас. Нолю без палочку поручили генерировать патчи.
...
Рейтинг: 0 / 0
26.12.2017, 15:08
    #39576177
merch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вывод текста процедуры в файл
xomjakoff, как научишься программировать на SQL, напиши.
...
Рейтинг: 0 / 0
26.12.2017, 15:17
    #39576193
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вывод текста процедуры в файл
xomjakoffв web-интерфейсефорум по вебу это не здесь.
...
Рейтинг: 0 / 0
26.12.2017, 16:18
    #39576249
xomjakoff
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вывод текста процедуры в файл
сколько острословов сразу собралось. браво!
Спасибо Добрый Э - Эх , хоть одно дельное предложение по поводу использования пакета dbms_metadata.get_ddl (как только с правами вопрос решим, обязательно попробую)
...
Рейтинг: 0 / 0
26.12.2017, 16:28
    #39576254
AmKad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вывод текста процедуры в файл
xomjakoffЖелательно, чтобы вместо всяких блоков с IF, переменных и данных из темповой таблицы, в insertы подставлялись конечные значения.Ты пока сам не знаешь, чего хочешь. Пока не осознаешь, и сформулировать доступно не сможешь.
...
Рейтинг: 0 / 0
26.12.2017, 16:30
    #39576257
DВА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вывод текста процедуры в файл
xomjakoffAmKad,

я же написал. Есть процедура. Есть web-интерфейс, связанный с этой процедурой. При нажатии на кнопочку в интерфейсе "сформировать скрипт", формируется текстовый файл с текстом процедуры внутри.
Желательно, чтобы вместо всяких блоков с IF, переменных и данных из темповой таблицы, в insertы подставлялись конечные значения.
Т.е. в идеале мне не "рыбу" этой процедуры нужно, а скрипт под конкретные параметры.

"Это фантастика, сынок" ))
...
Рейтинг: 0 / 0
26.12.2017, 16:39
    #39576269
xomjakoff
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вывод текста процедуры в файл
AmKad,

В топике я написал самый упрощенный вариант. Перефразируя еще раз, при нажатии execute в самом PL/SQLdeveloper вместо выполнения скрипта происходит формирование текстового файла с кодом скрипта.
Пусть это будет примитивный вариант, без подстановки параметров. А-ля copy/paste с экрана.
...
Рейтинг: 0 / 0
26.12.2017, 16:45
    #39576274
env
env
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вывод текста процедуры в файл
Ты уж определись, тебе
xomjakoffс текстом этой самой процедуры на выходе.
или
xomjakoffexecute в самом PL/SQLdeveloper
...
Рейтинг: 0 / 0
26.12.2017, 16:45
    #39576276
AmKad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вывод текста процедуры в файл
xomjakoffПерефразируя еще раз, при нажатии execute в самом PL/SQLdeveloper вместо выполнения скрипта происходит формирование текстового файла с кодом скрипта.Все. Теперь понял. В PL/SQLdeveloper есть возможность выгрузки объекта в файл. Берешь виндовый дизассемблер-отладчик (для win32 советую OllyDbg, для win32/64 - IDA Pro) и находишь код обработчика события Execute. Далее в нем делаешь безусловный переход на функцию выгрузки с корректной передачей параметров.
...
Рейтинг: 0 / 0
26.12.2017, 16:52
    #39576283
env
env
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вывод текста процедуры в файл
xomjakoff,

Читай доку на dba_arguments или перехватывай запросы allround'овской приблуды.
Будет что-то вроде:
Код: plsql
1.
2.
3.
4.
5.
SELECT POSITION, ARGUMENT_NAME, DATA_LEVEL, DATA_TYPE, IN_OUT, 
          case when char_used = 'C' then char_length else data_length end   DATA_LENGTH, 
          DATA_PRECISION, DATA_SCALE, TYPE_OWNER, TYPE_NAME, TYPE_SUBNAME, PLS_TYPE
FROM Dba_ARGUMENTS WHERE OWNER = :OWNER  AND OBJECT_ID = :ID AND OBJECT_NAME = :NAME AND NVL(OVERLOAD, '0') = :OVERLOAD
ORDER BY SEQUENCE
...
Рейтинг: 0 / 0
26.12.2017, 17:25
    #39576309
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вывод текста процедуры в файл
xomjakoffпри нажатии execute в самом PL/SQLdeveloper вместо выполнения скрипта происходит формирование текстового файла с кодом скрипта.
Не нажимайте execute.
Нажмите File->Save as.

Если в окне PL/SQL Developer скрипт, генерирующий скрипт, то:
1. RMBD->Change Window to->Command window
2. Вкладка Editor, добавляем в начало скрипта (или где более уместно) spool <имя файла>.
3. Execute. Profit.
...
Рейтинг: 0 / 0
26.12.2017, 17:59
    #39576340
xomjakoff
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вывод текста процедуры в файл
Спасибо. Очень разные предложенные варианты:) Не могу сказать, что мне сходу все понятно стало - их надо еще осмыслить!
А вот типа такого варианта, только с записью не в переменную (ограничение 4000 - слишком маленькое), а сразу в файл не существует?

declare
s Varchar2(4000);
begin
s := 'declare ';
s := s || chr(13) || ' v_cnt number ';
s := s || chr(13) || 'begin ';
s := s || chr(13) || ' select 5 into v_cnt from dual ';
s := s || chr(13) || ' dbms_output.put_line ('Искомый номер: '||v_cnt) ';
s := s || chr(13) || 'end;';

dbms_output.put_line(s);
end;
...
Рейтинг: 0 / 0
26.12.2017, 18:19
    #39576353
AmKad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вывод текста процедуры в файл
xomjakoffа сразу в файл не существует?dbms_metadata + dbms_blob.converttoblob + utl_file in binary mode.
...
Рейтинг: 0 / 0
26.12.2017, 18:22
    #39576356
вывод текста процедуры в файл
Законодателям надо бы присмотреться к проф-требованиям к программистам. А то такой специалист автоматизирует работу дворника, бабулька потом поскользнется и в морг.
...
Рейтинг: 0 / 0
26.12.2017, 18:27
    #39576360
rf_mail
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вывод текста процедуры в файл
xomjakoffСпасибо. Очень разные предложенные варианты:) Не могу сказать, что мне сходу все понятно стало - их надо еще осмыслить!
А вот типа такого варианта, только с записью не в переменную (ограничение 4000 - слишком маленькое), а сразу в файл не существует?

declare
s Varchar2(4000);
begin
s := 'declare ';
s := s || chr(13) || ' v_cnt number ';
s := s || chr(13) || 'begin ';
s := s || chr(13) || ' select 5 into v_cnt from dual ';
s := s || chr(13) || ' dbms_output.put_line ('Искомый номер: '||v_cnt) ';
s := s || chr(13) || 'end;';

dbms_output.put_line(s);
end;
Добрый день.
вашим языком
сразу в файл на файловый сервер, где Oracle настроен
...
Рейтинг: 0 / 0
26.12.2017, 18:42
    #39576366
rf_mail
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вывод текста процедуры в файл
xomjakoffСпасибо. Очень разные предложенные варианты:) Не могу сказать, что мне сходу все понятно стало - их надо еще осмыслить!
А вот типа такого варианта, только с записью не в переменную (ограничение 4000 - слишком маленькое), а сразу в файл не существует?

declare
s Varchar2(4000);
begin
s := 'declare ';
s := s || chr(13) || ' v_cnt number ';
s := s || chr(13) || 'begin ';
s := s || chr(13) || ' select 5 into v_cnt from dual ';
s := s || chr(13) || ' dbms_output.put_line ('Искомый номер: '||v_cnt) ';
s := s || chr(13) || 'end;';

dbms_output.put_line(s);
end;
и самое главное.
В вашей процедуре файлов нет, есть varchar2 - а это строка.
dbms_output.put_line(s)- пакет предназначен для вывода информации во временный буфер.
...
Рейтинг: 0 / 0
27.12.2017, 09:27
    #39576541
env
env
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вывод текста процедуры в файл
AmKad,

sqlplus + spool + dba_source
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / вывод текста процедуры в файл / 24 сообщений из 24, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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