powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Неудаляемый пакет
4 сообщений из 4, страница 1 из 1
Неудаляемый пакет
    #39280235
Valergrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В PL/SQL Developer есть опция "Безопасная компиляция". Насколько я понял, она предварительно комплирует пакет под другим именем, прежде чем скомпилировать. Включив эту опцию на 5 минут я получил кучу пакетов с именами типа

"P$21412816$TM", которые инвалидны.

И проблема в том что эти пакеты из системы теперь не получается удалить.
Любая попытка:

Код: plsql
1.
drop package "P$21412816$TM";



Наталкивается на

авторError at recursive level 1:
ORA-64204: encountered partial multibyte character

Что-то не так с этими именами, так что любая команда с их участием получает такую ошибку.
У кого-нибудь есть идеи что с этим можно сделать?
Вот как выглядят эти имена в базе:

Код: plsql
1.
2.
3.
4.
select dump(object_name)
                  from dba_objects
                 where object_type = 'PACKAGE'
                   and object_name like 'P$%';       




авторTyp=1 Len=13: 80,36,56,53,50,50,51,49,48,55,36,84,77
Typ=1 Len=13: 80,36,56,51,55,50,54,57,51,49,36,84,77
Typ=1 Len=13: 80,36,55,52,48,49,48,50,48,56,36,84,77
Typ=1 Len=13: 80,36,52,52,55,49,54,48,53,51,36,84,77
Typ=1 Len=13: 80,36,50,56,53,48,50,48,49,36,84,77,80
Typ=1 Len=13: 80,36,50,55,53,55,56,56,53,54,36,84,77
Typ=1 Len=13: 80,36,50,51,56,51,48,57,50,57,36,84,77
Typ=1 Len=13: 80,36,50,49,52,49,50,56,49,54,36,84,77

Версия Oracle 12.1
...
Рейтинг: 0 / 0
Неудаляемый пакет
    #39280252
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторError at recursive level 1:Не триггер ли шалит?
...
Рейтинг: 0 / 0
Неудаляемый пакет
    #39280260
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valergrad,

10046
...
Рейтинг: 0 / 0
Неудаляемый пакет
    #39280412
Valergrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Действительно, дело в триггере на drop без него все норм.
Триггер сохраняет текст пакета в табличку вот таким вот образом:
declare
v_text clob;
begin
for rvd in ( select t.TEXT, t.line
from user_source t
where t.NAME = 'P$18173392$TM'
and t.TYPE = 'PACKAGE' ) loop
v_text := v_text || rvd.text;
end loop;
end;

На 109-й строчке пакета собственно и падает. Почему я до конца еще не разобрался, но дело в кодировке в которой записывает pl/sql developer пакеты. Вот как выглядит 109-я строчка в настоящем пакете и во временном:


Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
select t.TEXT, t.line, t.origin_con_id, length(t.text), dump(t.text)
                  from dba_source t
                 where t.NAME = 'P$95368650$TM'
                   and t.TYPE = 'PACKAGE'
                   and line = 109
                 order by t.LINE;
                 
select t.TEXT, t.line, t.origin_con_id, length(t.text), dump(t.text)
                  from dba_source t
                 where t.NAME = 'OUR_PACKAGE'
                   and t.TYPE = 'PACKAGE'
                   and line = 109
                 order by t.LINE;        



автор"/* процедура заполнения закупочной цены без НДС */
" 109 0 25 Typ=1 Len=51: 47,42,32,239,240,238,246,229,228,243,240,224,32,231,224,239,238,235,237,229,237,232,255,32,231,224,234,243,239,238,247,237,238,233,32,246,229,237,251,32,225,229,231,32,205,196,209,32,42,47,10


"/* процедура заполнения закупочной цены без НДС */
" 109 0 51 Typ=1 Len=90: 47,42,32,208,191,209,128,208,190,209,134,208,181,208,180,209,131,209,128,208,176,32,208,183,208,176,208,191,208,190,208,187,208,189,208,181,208,189,208,184,209,143,32,208,183,208,176,208,186,209,131,208,191,208,190,209,135,208,189,208,190,208,185,32,209,134,208,181,208,189,209,139,32,208,177,208,181,208,183,32,208,157,208,148,208,161,32,42,47,10

Как видим length в первой строке он ошибочно считает как 25, и считывает по 2 символа, после чего 51-й символ конечно оказывается лишним.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Неудаляемый пакет
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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