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

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

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

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

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

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

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

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

В топике я написал самый упрощенный вариант. Перефразируя еще раз, при нажатии execute в самом PL/SQLdeveloper вместо выполнения скрипта происходит формирование текстового файла с кодом скрипта.
Пусть это будет примитивный вариант, без подстановки параметров. А-ля copy/paste с экрана.
...
Рейтинг: 0 / 0
вывод текста процедуры в файл
    #39576274
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ты уж определись, тебе
xomjakoffс текстом этой самой процедуры на выходе.
или
xomjakoffexecute в самом PL/SQLdeveloper
...
Рейтинг: 0 / 0
вывод текста процедуры в файл
    #39576276
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xomjakoffПерефразируя еще раз, при нажатии execute в самом PL/SQLdeveloper вместо выполнения скрипта происходит формирование текстового файла с кодом скрипта.Все. Теперь понял. В PL/SQLdeveloper есть возможность выгрузки объекта в файл. Берешь виндовый дизассемблер-отладчик (для win32 советую OllyDbg, для win32/64 - IDA Pro) и находишь код обработчика события Execute. Далее в нем делаешь безусловный переход на функцию выгрузки с корректной передачей параметров.
...
Рейтинг: 0 / 0
вывод текста процедуры в файл
    #39576283
Фотография 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
вывод текста процедуры в файл
    #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
вывод текста процедуры в файл
    #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
вывод текста процедуры в файл
    #39576353
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xomjakoffа сразу в файл не существует?dbms_metadata + dbms_blob.converttoblob + utl_file in binary mode.
...
Рейтинг: 0 / 0
вывод текста процедуры в файл
    #39576356
Законодателям надо бы присмотреться к проф-требованиям к программистам. А то такой специалист автоматизирует работу дворника, бабулька потом поскользнется и в морг.
...
Рейтинг: 0 / 0
вывод текста процедуры в файл
    #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
вывод текста процедуры в файл
    #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
вывод текста процедуры в файл
    #39576541
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AmKad,

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


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