|
|
|
вывод текста процедуры в файл
|
|||
|---|---|---|---|
|
#18+
Добрый день всем! Честно говоря, я человек еще только начинающий программировать на SQL, так что прошу заранее простить, если мой вопрос покажется странным. Допустим, у нас есть процедура (реальная процедура намного больше max размера переменной (4000), поэтому рассматриваю на простом примере): declare v_cnt number; begin select 5 into v_cnt from dual; dbms_output.put_line ('Искомый номер: '||v_cnt); end; Эта процедура запускается в web-интерфейсе, но требуется не выполнение самой процедуры, а формирование текстового документа с текстом этой самой процедуры на выходе. Вопрос: как это лучше всего сделать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2017, 13:49 |
|
||
|
вывод текста процедуры в файл
|
|||
|---|---|---|---|
|
#18+
xomjakoff, нужен текст процедуру? читай про dbms_metadata.get_ddl ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2017, 13:57 |
|
||
|
вывод текста процедуры в файл
|
|||
|---|---|---|---|
|
#18+
xomjakoff, Какую задачу ты решаешь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2017, 13:59 |
|
||
|
вывод текста процедуры в файл
|
|||
|---|---|---|---|
|
#18+
AmKad, я же написал. Есть процедура. Есть web-интерфейс, связанный с этой процедурой. При нажатии на кнопочку в интерфейсе "сформировать скрипт", формируется текстовый файл с текстом процедуры внутри. Желательно, чтобы вместо всяких блоков с IF, переменных и данных из темповой таблицы, в insertы подставлялись конечные значения. Т.е. в идеале мне не "рыбу" этой процедуры нужно, а скрипт под конкретные параметры. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2017, 14:07 |
|
||
|
вывод текста процедуры в файл
|
|||
|---|---|---|---|
|
#18+
xomjakoffТ.е. в идеале мне не "рыбу" этой процедуры нужно, а скрипт под конкретные параметры. http://www.bugtraq.ru/forum/faq/general/smart-questions.html] RTFM ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2017, 14:10 |
|
||
|
вывод текста процедуры в файл
|
|||
|---|---|---|---|
|
#18+
Добрый Э - Эх, спасибо, но насколько я понял этот пакет служит для выборки метаданных. Здесь все проще. Пользователь запускает в web-интерфейсе формирование скрипта. Полученный скрипт тестируется. Если все ОК, этот файл отдается для применения на продуктивной схеме ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2017, 14:21 |
|
||
|
вывод текста процедуры в файл
|
|||
|---|---|---|---|
|
#18+
xomjakoffнасколько я понял этот пакет служит для выборки метаданных. Проверьте и поймете. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2017, 14:25 |
|
||
|
вывод текста процедуры в файл
|
|||
|---|---|---|---|
|
#18+
xomjakoffЗдесь все проще. Пользователь запускает в web-интерфейсе формирование скрипта. Полученный скрипт тестируется. Если все ОК, этот файл отдается для применения на продуктивной схемеУжас. Нолю без палочку поручили генерировать патчи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2017, 14:34 |
|
||
|
вывод текста процедуры в файл
|
|||
|---|---|---|---|
|
#18+
xomjakoff, как научишься программировать на SQL, напиши. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2017, 15:08 |
|
||
|
вывод текста процедуры в файл
|
|||
|---|---|---|---|
|
#18+
xomjakoffв web-интерфейсефорум по вебу это не здесь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2017, 15:17 |
|
||
|
вывод текста процедуры в файл
|
|||
|---|---|---|---|
|
#18+
сколько острословов сразу собралось. браво! Спасибо Добрый Э - Эх , хоть одно дельное предложение по поводу использования пакета dbms_metadata.get_ddl (как только с правами вопрос решим, обязательно попробую) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2017, 16:18 |
|
||
|
вывод текста процедуры в файл
|
|||
|---|---|---|---|
|
#18+
xomjakoffЖелательно, чтобы вместо всяких блоков с IF, переменных и данных из темповой таблицы, в insertы подставлялись конечные значения.Ты пока сам не знаешь, чего хочешь. Пока не осознаешь, и сформулировать доступно не сможешь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2017, 16:28 |
|
||
|
вывод текста процедуры в файл
|
|||
|---|---|---|---|
|
#18+
xomjakoffAmKad, я же написал. Есть процедура. Есть web-интерфейс, связанный с этой процедурой. При нажатии на кнопочку в интерфейсе "сформировать скрипт", формируется текстовый файл с текстом процедуры внутри. Желательно, чтобы вместо всяких блоков с IF, переменных и данных из темповой таблицы, в insertы подставлялись конечные значения. Т.е. в идеале мне не "рыбу" этой процедуры нужно, а скрипт под конкретные параметры. "Это фантастика, сынок" )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2017, 16:30 |
|
||
|
вывод текста процедуры в файл
|
|||
|---|---|---|---|
|
#18+
AmKad, В топике я написал самый упрощенный вариант. Перефразируя еще раз, при нажатии execute в самом PL/SQLdeveloper вместо выполнения скрипта происходит формирование текстового файла с кодом скрипта. Пусть это будет примитивный вариант, без подстановки параметров. А-ля copy/paste с экрана. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2017, 16:39 |
|
||
|
вывод текста процедуры в файл
|
|||
|---|---|---|---|
|
#18+
Ты уж определись, тебе xomjakoffс текстом этой самой процедуры на выходе. или xomjakoffexecute в самом PL/SQLdeveloper ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2017, 16:45 |
|
||
|
вывод текста процедуры в файл
|
|||
|---|---|---|---|
|
#18+
xomjakoffПерефразируя еще раз, при нажатии execute в самом PL/SQLdeveloper вместо выполнения скрипта происходит формирование текстового файла с кодом скрипта.Все. Теперь понял. В PL/SQLdeveloper есть возможность выгрузки объекта в файл. Берешь виндовый дизассемблер-отладчик (для win32 советую OllyDbg, для win32/64 - IDA Pro) и находишь код обработчика события Execute. Далее в нем делаешь безусловный переход на функцию выгрузки с корректной передачей параметров. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2017, 16:45 |
|
||
|
вывод текста процедуры в файл
|
|||
|---|---|---|---|
|
#18+
xomjakoff, Читай доку на dba_arguments или перехватывай запросы allround'овской приблуды. Будет что-то вроде: Код: plsql 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2017, 16:52 |
|
||
|
вывод текста процедуры в файл
|
|||
|---|---|---|---|
|
#18+
xomjakoffпри нажатии execute в самом PL/SQLdeveloper вместо выполнения скрипта происходит формирование текстового файла с кодом скрипта. Не нажимайте execute. Нажмите File->Save as. Если в окне PL/SQL Developer скрипт, генерирующий скрипт, то: 1. RMBD->Change Window to->Command window 2. Вкладка Editor, добавляем в начало скрипта (или где более уместно) spool <имя файла>. 3. Execute. Profit. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2017, 17:25 |
|
||
|
вывод текста процедуры в файл
|
|||
|---|---|---|---|
|
#18+
Спасибо. Очень разные предложенные варианты:) Не могу сказать, что мне сходу все понятно стало - их надо еще осмыслить! А вот типа такого варианта, только с записью не в переменную (ограничение 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; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2017, 17:59 |
|
||
|
вывод текста процедуры в файл
|
|||
|---|---|---|---|
|
#18+
xomjakoffа сразу в файл не существует?dbms_metadata + dbms_blob.converttoblob + utl_file in binary mode. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2017, 18:19 |
|
||
|
вывод текста процедуры в файл
|
|||
|---|---|---|---|
|
#18+
Законодателям надо бы присмотреться к проф-требованиям к программистам. А то такой специалист автоматизирует работу дворника, бабулька потом поскользнется и в морг. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2017, 18:22 |
|
||
|
вывод текста процедуры в файл
|
|||
|---|---|---|---|
|
#18+
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 настроен ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2017, 18:27 |
|
||
|
вывод текста процедуры в файл
|
|||
|---|---|---|---|
|
#18+
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)- пакет предназначен для вывода информации во временный буфер. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2017, 18:42 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=39576147&tid=1884666]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
156ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
84ms |
get tp. blocked users: |
2ms |
| others: | 226ms |
| total: | 512ms |

| 0 / 0 |
