|
|
|
Странное поведение переменных в пакетах, с большим количеством строк
|
|||
|---|---|---|---|
|
#18+
допустим ошибка из-за переполнения таблицы констант. Тогда как объяснить это: Я создал в пакете две функции: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. та что выше ( fIr$Tmp2) пытается вернуть 268435457, а та что ниже (fIr$Tmp) - 26843 Результат: Код: plsql 1. 2. 3. 4. Другими словами, если возвращаемое значение меньше определенной величины, то все корректно независимо от положения в пакете. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2017, 12:42 |
|
||
|
Странное поведение переменных в пакетах, с большим количеством строк
|
|||
|---|---|---|---|
|
#18+
Ivan Rabashchenko, Может у Вас есть в пакете функция nRes которая возвращает number? И при return nRes; результат отдается не переменной а функции? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2017, 12:46 |
|
||
|
Странное поведение переменных в пакетах, с большим количеством строк
|
|||
|---|---|---|---|
|
#18+
MaximaXXLIvan Rabashchenko, Может у Вас есть в пакете функция nRes которая возвращает number? И при return nRes; результат отдается не переменной а функции? Код: plsql 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2017, 12:49 |
|
||
|
Странное поведение переменных в пакетах, с большим количеством строк
|
|||
|---|---|---|---|
|
#18+
Ivan Rabashchenko, А если так? Код: plsql 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2017, 12:54 |
|
||
|
Странное поведение переменных в пакетах, с большим количеством строк
|
|||
|---|---|---|---|
|
#18+
Ivan RabashchenkoДругими словами, если возвращаемое значение меньше определенной величины, то все корректно независимо от положения в пакете.так -2- написал же 21017332 и даже показал. с небольшой правкой от меня: 21017730 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2017, 12:54 |
|
||
|
Странное поведение переменных в пакетах, с большим количеством строк
|
|||
|---|---|---|---|
|
#18+
если объяснить его пример простыми словами, то: -2- Код: 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. тестовый код Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2017, 13:02 |
|
||
|
Странное поведение переменных в пакетах, с большим количеством строк
|
|||
|---|---|---|---|
|
#18+
Спасибо огромное за разъяснения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2017, 13:33 |
|
||
|
Странное поведение переменных в пакетах, с большим количеством строк
|
|||
|---|---|---|---|
|
#18+
xtenderPL/SQL Program LimitsЧитаем доки PL/SQL Program Limits лимита на количество литералов там нет Под вот это не попадает? ItemLimitbind variables passed to a program unit32768 Ну или на крайний случай их просто забыли упомянутьавтор...such as identifiers, keywords, operators, and so on. This allows for ~6,000,000 lines of code unless you exceed limits imposed by the PL/SQL compiler, some of which are given in Table C-1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2017, 13:50 |
|
||
|
Странное поведение переменных в пакетах, с большим количеством строк
|
|||
|---|---|---|---|
|
#18+
Если я правильно понял, заполненная таблица констант живет после компиляции где-то в БД. А где именно она в БД живет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2017, 14:22 |
|
||
|
Странное поведение переменных в пакетах, с большим количеством строк
|
|||
|---|---|---|---|
|
#18+
PL/SQL Program Limits, Ошибка то где? Хотя бы даже ORA-600.... Бага она и есть бага. Т.ч. документация идет лесом. IMHO ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2017, 14:38 |
|
||
|
Странное поведение переменных в пакетах, с большим количеством строк
|
|||
|---|---|---|---|
|
#18+
помню, был в 1996 некий анализ еще клипперного ПО там тоже упирались в количество переменных Предлагали делать массивом, один массив на все тыщи переменных Т.е. в нашем случае - сделать коллекцию констант Правда, для заполнения коллекции придется ее теми же константами и заполнять... которые надо где-то хранить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2017, 14:47 |
|
||
|
Странное поведение переменных в пакетах, с большим количеством строк
|
|||
|---|---|---|---|
|
#18+
PL/SQL Program LimitsПод вот это не попадает?не попадает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2017, 15:00 |
|
||
|
Странное поведение переменных в пакетах, с большим количеством строк
|
|||
|---|---|---|---|
|
#18+
xtender, таблица констант - только для чисел? n varchar2(20); - как в этом случае повторить пример спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2017, 15:21 |
|
||
|
Странное поведение переменных в пакетах, с большим количеством строк
|
|||
|---|---|---|---|
|
#18+
Ivan RabashchenkoЕсли я правильно понял, заполненная таблица констант живет после компиляции где-то в БД. А где именно она в БД живет?да зачем это вам надо? Если уж сильно интересно поковыряться, то тут: Код: 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. подробности: https://www.blackhat.com/presentations/bh-usa-06/BH-US-06-Finnigan.pdf если не ошибаюсь #xxx и есть индекс константы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2017, 15:31 |
|
||
|
Странное поведение переменных в пакетах, с большим количеством строк
|
|||
|---|---|---|---|
|
#18+
xtenderIvan RabashchenkoЕсли я правильно понял, заполненная таблица констант живет после компиляции где-то в БД. А где именно она в БД живет?да зачем это вам надо? Если уж сильно интересно поковыряться, то тут: Код: 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. подробности: https://www.blackhat.com/presentations/bh-usa-06/BH-US-06-Finnigan.pdf если не ошибаюсь #xxx и есть индекс константы Нужно, чтобы понять, насколько критично кол-во констант в пакете. Спасибо за помощь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2017, 15:39 |
|
||
|
Странное поведение переменных в пакетах, с большим количеством строк
|
|||
|---|---|---|---|
|
#18+
dba123xtender, таблица констант - только для чисел? n varchar2(20); - как в этом случае повторить пример спасибос varchar2 такой оптимизации нет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2017, 15:40 |
|
||
|
Странное поведение переменных в пакетах, с большим количеством строк
|
|||
|---|---|---|---|
|
#18+
Ivan Rabashchenko, Так генератор поправить можно? Код: plsql 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2017, 15:50 |
|
||
|
Странное поведение переменных в пакетах, с большим количеством строк
|
|||
|---|---|---|---|
|
#18+
Ivan Rabashchenko, тогда уж так проще было бы: Код: plsql 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2017, 15:51 |
|
||
|
Странное поведение переменных в пакетах, с большим количеством строк
|
|||
|---|---|---|---|
|
#18+
env, уж проще было бы просто to_number '268435456' без запроса ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2017, 15:53 |
|
||
|
Странное поведение переменных в пакетах, с большим количеством строк
|
|||
|---|---|---|---|
|
#18+
xtenderс varchar2 такой оптимизации нетИнтересно, как отработает с неявным преобразованием и plsql_optimize_level, скажем, равным нулю: Код: plsql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2017, 15:56 |
|
||
|
Странное поведение переменных в пакетах, с большим количеством строк
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2017, 15:59 |
|
||
|
Странное поведение переменных в пакетах, с большим количеством строк
|
|||
|---|---|---|---|
|
#18+
xtender, В лом). Пусть автор пробует, в качестве workaround это для него самый быстрый вариант. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2017, 16:00 |
|
||
|
Странное поведение переменных в пакетах, с большим количеством строк
|
|||
|---|---|---|---|
|
#18+
AmKadxtender, В лом). Пусть автор пробует, в качестве workaround это для него самый быстрый вариант. Спасибо за workaround! return 'xxxxxxxxxx' норм вариант ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2017, 16:14 |
|
||
|
Странное поведение переменных в пакетах, с большим количеством строк
|
|||
|---|---|---|---|
|
#18+
Ivan RabashchenkoСпасибо за workaround! return 'xxxxxxxxxx' норм вариантБлагодари -2-, это он разгадал особенности компиляции PL/SQL кода. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2017, 16:19 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=39566715&tid=1884763]: |
0ms |
get settings: |
9ms |
get forum list: |
20ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
178ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
| others: | 209ms |
| total: | 495ms |

| 0 / 0 |
