|
Глюк Оракла с OUT NOCOPY
|
|||
---|---|---|---|
#18+
Делаю триггер на основе процедуры, пытаясь изменить колонку, вставляется NULL. Вот пример: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34.
Bыдаёт cтроку: A= '123456789012345' В=NULL; Ecли убрать NOCOPY или использовать тип NUMBER, то работает согласно русской логике, а не американской. Нагуглить этот косяк не смог. Оракле - 11.2. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2020, 15:28 |
|
Глюк Оракла с OUT NOCOPY
|
|||
---|---|---|---|
#18+
mercator Нагуглить этот косяк Подскажите пожалуйста, какого эффекта Вы ожидаете от буквосочетания "Out Nocopy" ... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2020, 15:40 |
|
Глюк Оракла с OUT NOCOPY
|
|||
---|---|---|---|
#18+
andrey_anonymous, ожидаю, что результат выполнения процедуры сразу скопируется в значение параметра, т.е. в :new.b. Кстати так и происходит, если типы параметров NUMBER. А вот с VARCHAR2 - oблом. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2020, 15:46 |
|
Глюк Оракла с OUT NOCOPY
|
|||
---|---|---|---|
#18+
mercator так и происходит Это зависит от решения компилятора. Попробуйте "более традиционный" вариант с IN OUT NOCOPY. Ну и версия сервера непонятна - 11.2.0.1, к примеру, наполнен багами значительно плотнее, чем 11.2.0.5. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2020, 16:01 |
|
Глюк Оракла с OUT NOCOPY
|
|||
---|---|---|---|
#18+
andrey_anonymous, не понимаю, о каком "решении компилятора" речь ? :) Захочу - вставлю результат выполнения процедуры, захочу - вставлю NULL. Bepcия - 11.2.0.4. Про 11.2.0.5 не слышал что-то. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2020, 16:42 |
|
Глюк Оракла с OUT NOCOPY
|
|||
---|---|---|---|
#18+
mercator Захочу - вставлю ... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2020, 16:50 |
|
Глюк Оракла с OUT NOCOPY
|
|||
---|---|---|---|
#18+
Elic mercator Захочу - вставлю He понял. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2020, 17:02 |
|
Глюк Оракла с OUT NOCOPY
|
|||
---|---|---|---|
#18+
сложно в автономной транзакции в лог записать результат процедуры? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2020, 17:16 |
|
Глюк Оракла с OUT NOCOPY
|
|||
---|---|---|---|
#18+
alex-ls, Записывал, результат верный - '123456789012345123456789012345'. Глюк на этапе приравнивания - выполняем :new.b := '123456789012345123456789012345', а получаем :new.b := NULL. Ccылками NOCOPY неправильно оракл играется. В доке существует предупреждение про Exception, но тут всё штатно, никакого Exception не происходит. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2020, 17:19 |
|
Глюк Оракла с OUT NOCOPY
|
|||
---|---|---|---|
#18+
mercator Ecли убрать NOCOPY или использовать тип NUMBER, то работает согласно русской логике, а не американской. Американская логика работает согласно американской документации: By default, actual parameter is passed by value; if you specify NOCOPY, it might be passed by reference. SY. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2020, 19:23 |
|
Глюк Оракла с OUT NOCOPY
|
|||
---|---|---|---|
#18+
mercator He понял. Код: plsql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
21.01.2020, 07:07 |
|
Глюк Оракла с OUT NOCOPY
|
|||
---|---|---|---|
#18+
Похоже на ошибку plsql-оптимизации. Например, в триггере отслеживается изменение полей :new (по аналогии с updating(поле)) и признак по окончании триггера используется для копирования только изменений в реальную запись. С nocopy изменений поля в контексте триггера не видно. Явное присвоение значения до вызова процедуры должно исправить поведение. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.01.2020, 07:44 |
|
Глюк Оракла с OUT NOCOPY
|
|||
---|---|---|---|
#18+
-2- Похоже на ошибку plsql-оптимизации. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.01.2020, 08:17 |
|
Глюк Оракла с OUT NOCOPY
|
|||
---|---|---|---|
#18+
By default, actual parameter is passed by value; if you specify NOCOPY, it might be passed by reference. SY. Пускай будет ссылка. Почему если делать через промежуточную переменную, то работает логично, по-русски: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
... |
|||
:
Нравится:
Не нравится:
|
|||
21.01.2020, 10:26 |
|
Глюк Оракла с OUT NOCOPY
|
|||
---|---|---|---|
#18+
У меня вообще ошибка перестала воспроизводиться :( Пробовал на разных базах и разных серверах. А на боевом 2 дня не мог понять в чём дело. Похоже глюк оракла плавающий. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.01.2020, 10:41 |
|
Глюк Оракла с OUT NOCOPY
|
|||
---|---|---|---|
#18+
mercator Похоже глюк оракла плавающий. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.01.2020, 11:57 |
|
Глюк Оракла с OUT NOCOPY
|
|||
---|---|---|---|
#18+
Elic Скорее кто-то что-то делал не так. Скрипт же целиком выложен. Да и народ вроде пробовал, не со слов же помочь пытался.. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.01.2020, 13:05 |
|
Глюк Оракла с OUT NOCOPY
|
|||
---|---|---|---|
#18+
mercator Скрипт же целиком выложен. Elic mercator Захочу - вставлю mercator Да и народ вроде пробовал Elic Не воспроизводится. mercator не со слов же помочь пытался. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.01.2020, 13:10 |
|
Глюк Оракла с OUT NOCOPY
|
|||
---|---|---|---|
#18+
Elic Я не видел ни одного вывода из SQL*Plus-а. Твоего в том числе. Только невнятные вопли. He надо так грубо. Дело в том, что запускал в лягушке. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.01.2020, 13:19 |
|
Глюк Оракла с OUT NOCOPY
|
|||
---|---|---|---|
#18+
mercator Дело в том, что запускал в лягушке. Так что руки. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.01.2020, 13:27 |
|
Глюк Оракла с OUT NOCOPY
|
|||
---|---|---|---|
#18+
mercator He надо так грубо ... |
|||
:
Нравится:
Не нравится:
|
|||
21.01.2020, 13:30 |
|
Глюк Оракла с OUT NOCOPY
|
|||
---|---|---|---|
#18+
Elic, Дружище, с чего ты взъелся на меня!? Есть скрипт, причём полный, я бы, на твоём месте, прежде чем отвечать, прогнал бы его. А глюк я продолжаю искать. Сейчас из боевой достану глючный триггер и прогоню через него наш биллинг из миллионов строк. Такое ощущение, что триггер спотыкается не на каждой строке. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.01.2020, 13:41 |
|
Глюк Оракла с OUT NOCOPY
|
|||
---|---|---|---|
#18+
mercator прежде чем отвечать, прогнал бы его. Elic Не воспроизводится. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.01.2020, 13:49 |
|
Глюк Оракла с OUT NOCOPY
|
|||
---|---|---|---|
#18+
mercator А глюк я продолжаю искать. Сейчас из боевой достану глючный триггер и прогоню через него наш биллинг из миллионов строк. Такое ощущение, что триггер спотыкается не на каждой строке. я бы уволил за такое... ... |
|||
:
Нравится:
Не нравится:
|
|||
21.01.2020, 17:03 |
|
|
start [/forum/topic.php?fid=52&msg=39916796&tid=1881637]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
45ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
63ms |
get tp. blocked users: |
1ms |
others: | 271ms |
total: | 426ms |
0 / 0 |