|
|
|
Неудаляемый пакет
|
|||
|---|---|---|---|
|
#18+
В PL/SQL Developer есть опция "Безопасная компиляция". Насколько я понял, она предварительно комплирует пакет под другим именем, прежде чем скомпилировать. Включив эту опцию на 5 минут я получил кучу пакетов с именами типа "P$21412816$TM", которые инвалидны. И проблема в том что эти пакеты из системы теперь не получается удалить. Любая попытка: Код: plsql 1. Наталкивается на авторError at recursive level 1: ORA-64204: encountered partial multibyte character Что-то не так с этими именами, так что любая команда с их участием получает такую ошибку. У кого-нибудь есть идеи что с этим можно сделать? Вот как выглядят эти имена в базе: Код: plsql 1. 2. 3. 4. автор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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2016, 12:20:43 |
|
||
|
Неудаляемый пакет
|
|||
|---|---|---|---|
|
#18+
авторError at recursive level 1:Не триггер ли шалит? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2016, 12:38:00 |
|
||
|
Неудаляемый пакет
|
|||
|---|---|---|---|
|
#18+
Valergrad, 10046 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2016, 12:45:44 |
|
||
|
Неудаляемый пакет
|
|||
|---|---|---|---|
|
#18+
Действительно, дело в триггере на 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. автор"/* процедура заполнения закупочной цены без НДС */ " 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-й символ конечно оказывается лишним. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2016, 14:58:57 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=39280412&tid=1887807]: |
0ms |
get settings: |
7ms |
get forum list: |
14ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
148ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
| others: | 198ms |
| total: | 427ms |

| 0 / 0 |
