Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Проблема с dbms_metadata.get_ddl  [new]
BeautifulGirl
Member

Откуда:
Сообщений: 42
Есть скрипт, который с помощью dbms_metadata.get_ddl запихивает ddl пакетов в sql файл. Все отрабатывает без ошибок.

Если затем этот sql выполнить в Navigator'е, то все будет в порядке и ошибок не вывалится. А вот если этот скрипт выполнить командой sqlplus из bat файла, то все вывалится на ошибке "SP2-0042 неизвестная команда".

У меня есть подозрение, что это он неадекватно относится к комментариям.

Никто с таким не сталкивался?
11 сен 08, 15:23    [6174353]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с dbms_metadata.get_ddl  [new]
big bug
Member

Откуда:
Сообщений: 110
А сам скрипт, или ту его часть где комментарии (если скрипт большой) вы могли бы показать?
11 сен 08, 15:27    [6174396]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с dbms_metadata.get_ddl  [new]
pravednik
Member

Откуда: Jacksonville, FL
Сообщений: 16268
на какой строке вываливается ошибка ?
11 сен 08, 15:27    [6174402]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с dbms_metadata.get_ddl  [new]
Elic
Member

Откуда:
Сообщений: 29988
pravednik
на какой строке вываливается ошибка ?
После пустой :)

2 КрасиваяДевчонка
Чтобы SQL*Plus индифферентно относился к пустым строкам в хранимом коде, у него есть специальная команда для этого.
11 сен 08, 15:31    [6174440]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с dbms_metadata.get_ddl  [new]
BeautifulGirl
Member

Откуда:
Сообщений: 42
pravednik
на какой строке вываливается ошибка ?


номера строки не пишет. Вываливает ошибку

SP2-0042 неизвестная команда "49,49#" - остаток строки опущен.

Могу предположить, что это вот этот кусок кода, хотя надпись 49,49# встречается много где...

if (month_ = to_number(crec.month_)) and (year_ = to_number(crec.year_)) then --
#49,49#
NN$PSP_RT.psp_prn('selected');
end if; --#49,49#

Ситуаций, аналогичных этой, в коде много. Где-то он выдает ошибку, где-то - нет.
11 сен 08, 15:41    [6174534]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с dbms_metadata.get_ddl  [new]
BeautifulGirl
Member

Откуда:
Сообщений: 42
Elic
pravednik
на какой строке вываливается ошибка ?
После пустой :)

2 КрасиваяДевчонка
Чтобы SQL*Plus индифферентно относился к пустым строкам в хранимом коде, у него есть специальная команда для этого.


а какая команда?
11 сен 08, 15:41    [6174542]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с dbms_metadata.get_ddl  [new]
BeautifulGirl
Member

Откуда:
Сообщений: 42
Если поможет, то в скрипте, создающем sql файл с ddl, сделаты установки:

set define on
set lines 4000
set termout off
set heading off feedback off
set heading off
set verify off
set pages 0
set trimspool on
set feed off
set serveroutput on size 200000
set long 64000
11 сен 08, 15:44    [6174558]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с dbms_metadata.get_ddl  [new]
pravednik
Member

Откуда: Jacksonville, FL
Сообщений: 16268
BeautifulGirl
pravednik
на какой строке вываливается ошибка ?


номера строки не пишет. Вываливает ошибку

SP2-0042 неизвестная команда "49,49#" - остаток строки опущен.

Могу предположить, что это вот этот кусок кода, хотя надпись 49,49# встречается много где...

if (month_ = to_number(crec.month_)) and (year_ = to_number(crec.year_)) then --
#49,49#
NN$PSP_RT.psp_prn('selected');
end if; --#49,49#

Ситуаций, аналогичных этой, в коде много. Где-то он выдает ошибку, где-то - нет.

покажите скрипт выгрузки.... у вас столбец, в который идет выгрузка, имеет меньший чем нужно FORMAT
11 сен 08, 15:44    [6174561]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с dbms_metadata.get_ddl  [new]
pravednik
Member

Откуда: Jacksonville, FL
Сообщений: 16268
ну и поиск SPOOL. Длинна строки
11 сен 08, 15:46    [6174574]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с dbms_metadata.get_ddl  [new]
BeautifulGirl
Member

Откуда:
Сообщений: 42
pravednik
BeautifulGirl
pravednik
на какой строке вываливается ошибка ?


номера строки не пишет. Вываливает ошибку

SP2-0042 неизвестная команда "49,49#" - остаток строки опущен.

Могу предположить, что это вот этот кусок кода, хотя надпись 49,49# встречается много где...

if (month_ = to_number(crec.month_)) and (year_ = to_number(crec.year_)) then --
#49,49#
NN$PSP_RT.psp_prn('selected');
end if; --#49,49#

Ситуаций, аналогичных этой, в коде много. Где-то он выдает ошибку, где-то - нет.

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


Скрипт ОЧЕНЬ большой (27044 строки). Вот больший кусок:

src$lines#__:='55,55'; for crec in (select distinct a.month_, b.year_ from (sele
ct distinct to_char(TIMESTAMP,'MM') as month_, TIMESTAMP from T$LIST_PB) a, (sel
ect distinct to_char(TIMESTAMP,'YYYY') as year_, TIMESTAMP from T$LIST_PB) b whe
re a.TIMESTAMP=b.TIMESTAMP) loop --#55,55#
NN$PSP_RT.psp_prn('
<option value = "');
src$lines#__:='56,56'; NN$PSP_RT.psp_prn(crec.month_); --#56,56#
NN$PSP_RT.psp_prn(crec.year_); --#56,56#
NN$PSP_RT.psp_prn('" ');
if (month_ = to_number(crec.month_)) and (year_ = to_number(crec.year_)) then --
#56,56#
NN$PSP_RT.psp_prn('selected');
end if; --#56,56#
NN$PSP_RT.psp_prn('>');
NN$PSP_RT.psp_prn(crec.month_); --#56,56#
NN$PSP_RT.psp_prn('.');
NN$PSP_RT.psp_prn(crec.year_); --#56,56#
NN$PSP_RT.psp_prn('</option>
');
src$lines#__:='57,57'; end loop; --#57,57#
NN$PSP_RT.psp_prn('

</select>
');
src$lines#__:='60,62'; --#60,60#
IF param('type_') is null OR param('month_') is null then prn('</form>'); return
; END IF; --#61,61#
src$lines#__:='63,68'; --#63,63#
select count(id) into m --#64,64#
from T$COMPANY --#65,65#
where type ='org' --#66,66#
ORDER BY name; --#67,67#
11 сен 08, 15:50    [6174613]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с dbms_metadata.get_ddl  [new]
StarBlade
Member

Откуда: Хорошо хоть не из МСК
Сообщений: 415
BeautifulGirl
Elic
pravednik
на какой строке вываливается ошибка ?
После пустой :)

2 КрасиваяДевчонка
Чтобы SQL*Plus индифферентно относился к пустым строкам в хранимом коде, у него есть специальная команда для этого.


а какая команда?


Гы ..
ВеликолепнаяДевочка. Будте последовательны. Не пользуйтесь вы этим мерзким плюсом. Это все равно что сравнить помаду от Рив Гош со старым бабкиным средстром - отварной свеклой. Навигатор - прекрасное девченечье орудие. Сказанет Элик вам - эта уйдет так другие ошибки и геморои повалят. Некароший этот плюссик. :)
11 сен 08, 15:50    [6174617]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с dbms_metadata.get_ddl  [new]
Elic
Member

Откуда:
Сообщений: 29988
BeautifulGirl
Elic
Чтобы SQL*Plus индифферентно относился к пустым строкам в хранимом коде, у него есть специальная команда для этого.
а какая команда?
Достаточно перевести "пустые строки", чтобы легко найти соответствующий SET.
11 сен 08, 15:52    [6174628]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с dbms_metadata.get_ddl  [new]
BeautifulGirl
Member

Откуда:
Сообщений: 42
StarBlade


Гы ..
ВеликолепнаяДевочка. Будте последовательны. Не пользуйтесь вы этим мерзким плюсом. Навигатор - прекрасное девченечье орудие. Сказанет Элик вам - эта уйдет так другие ошибки и геморои повалят. Некароший этот плюссик. :)


Да разве б я по своей воле стала бы с этим "мерзким плюсом" связываться? Просто надо все это дело автоматизировать. Будет 1 батник, добавленный на одном сервере в Scheduled tasks, создающий эти скрипты, а потом на другом сервере другой батник так же из Scheduled tasks будет все эти скрипты выполнять. Т.е. минимум ручной работы: только по перенесению скрипта с одного сервака на другой.... да и то не моими руками, гы-гы :))
11 сен 08, 15:59    [6174702]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с dbms_metadata.get_ddl  [new]
pravednik
Member

Откуда: Jacksonville, FL
Сообщений: 16268
BeautifulGirl
pravednik
BeautifulGirl
pravednik
на какой строке вываливается ошибка ?


номера строки не пишет. Вываливает ошибку

SP2-0042 неизвестная команда "49,49#" - остаток строки опущен.

Могу предположить, что это вот этот кусок кода, хотя надпись 49,49# встречается много где...

if (month_ = to_number(crec.month_)) and (year_ = to_number(crec.year_)) then --
#49,49#
NN$PSP_RT.psp_prn('selected');
end if; --#49,49#

Ситуаций, аналогичных этой, в коде много. Где-то он выдает ошибку, где-то - нет.

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


Скрипт ОЧЕНЬ большой (27044 строки). Вот больший кусок:


не то...покажите скрипт, которым вы выгружаете в текстовый файлик
11 сен 08, 16:05    [6174756]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с dbms_metadata.get_ddl  [new]
sqlplus
Member

Откуда: sql+
Сообщений: 641
BeautifulGirl
[quot StarBlade]
Да разве б я по своей воле стала бы с этим "мерзким плюсом" связываться?



Никакой он не мерзкий, не надо наговаривать. Лучший друг администратора.
11 сен 08, 16:28    [6174959]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с dbms_metadata.get_ddl  [new]
BeautifulGirl
Member

Откуда:
Сообщений: 42
pravednik

не то...покажите скрипт, которым вы выгружаете в текстовый файлик


set define on
set lines 4000
set termout off
set heading off feedback off
set heading off
set verify off
set pages 0
set trimspool on
set feed off
set serveroutput on size 200000
set long 64000

CREATE TABLE t$ddls
(ddl CLOB);

/

DECLARE
sql_str VARCHAR2(32000);
cellvalue CLOB;


BEGIN

FOR crec IN (SELECT statement ...)
LOOP
BEGIN

sql_str := 'SELECT dbms_metadata.get_ddl(''PACKAGE'','''||crec.object_name||''') FROM dual';
EXECUTE IMMEDIATE sql_str INTO cellvalue;

INSERT INTO t$ddls(ddl)
VALUES(cellvalue);

EXCEPTION WHEN others THEN null;
END;
END LOOP;
COMMIT;

END;

/


select ddl
from t$ddls

spool create_packages.sql

/

spool off

DROP TABLE t$ddls;
/
11 сен 08, 16:34    [6175009]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с dbms_metadata.get_ddl  [new]
StarBlade
Member

Откуда: Хорошо хоть не из МСК
Сообщений: 415
sqlplus
BeautifulGirl
[quot StarBlade]
Да разве б я по своей воле стала бы с этим "мерзким плюсом" связываться?



Никакой он не мерзкий, не надо наговаривать. Лучший друг администратора.


Ну это... Шутим мы с девочкой... У нее такие проблеммы... Вот и пытаюсь ее развлечь пока другие всматриваются в тысячи строк кода.
11 сен 08, 16:38    [6175047]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с dbms_metadata.get_ddl  [new]
Elic
Member

Откуда:
Сообщений: 29988
pravednik
не то...покажите скрипт, которым вы выгружаете в текстовый файлик
Эх :) RTFM set sqlbl
11 сен 08, 16:41    [6175077]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с dbms_metadata.get_ddl  [new]
pravednik
Member

Откуда: Jacksonville, FL
Сообщений: 16268
Elic
pravednik
не то...покажите скрипт, которым вы выгружаете в текстовый файлик
Эх :) RTFM set sqlbl

я понял, что вы хотели сказать...
исходя из
автор
Есть скрипт, который с помощью dbms_metadata.get_ddl запихивает ddl пакетов в sql файл. Все отрабатывает без ошибок.
я предполагаяю, что у автора проблема с результатом вывода dbms_metadata.
С подобной ситуацией (когда строки съезжают из за недостаточной длинны) я сам сталкивался, и Ваш совет по поводу COL FORMAT мне тогда как раз помог.
11 сен 08, 16:55    [6175192]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с dbms_metadata.get_ddl  [new]
BeautifulGirl
Member

Откуда:
Сообщений: 42
Дописала в создающий скрипт

column c format a600

не помогает...
11 сен 08, 17:36    [6175461]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с dbms_metadata.get_ddl  [new]
Elic
Member

Откуда:
Сообщений: 29988
BeautifulGirl
не помогает...
Совсем блондинка?
11 сен 08, 17:38    [6175477]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с dbms_metadata.get_ddl  [new]
BeautifulGirl
Member

Откуда:
Сообщений: 42
Elic
BeautifulGirl
не помогает...
Совсем блондинка?


и set sqlbl тоже
11 сен 08, 17:42    [6175505]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с dbms_metadata.get_ddl  [new]
Elic
Member

Откуда:
Сообщений: 29988
BeautifulGirl
и set sqlbl тоже
Его нужно совать не куда попало, а туда где ругается
11 сен 08, 17:55    [6175581]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с dbms_metadata.get_ddl  [new]
pravednik
Member

Откуда: Jacksonville, FL
Сообщений: 16268
BeautifulGirl
Дописала в создающий скрипт

column c format a600

не помогает...

а у вас где нить есть столбец с алиасом С ?
11 сен 08, 18:08    [6175649]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с dbms_metadata.get_ddl  [new]
BeautifulGirl
Member

Откуда:
Сообщений: 42
pravednik
BeautifulGirl
Дописала в создающий скрипт

column c format a600

не помогает...

а у вас где нить есть столбец с алиасом С ?


но это я так, условно. Там на самом деле имя столбца написано.
11 сен 08, 18:17    [6175688]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Oracle Ответить