|
|
|
Чем лимитируется длина varchar2, если в скобках ничего не указано?
|
|||
|---|---|---|---|
|
#18+
Сегодня столкнулись с ситуацией, что тестирование процедуры из sqlplus: Код: plsql 1. 2. 3. 4. 5. 6. 7. падает внутри процедуры на строке: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. вот тут вот: O_ERR := V_PROCNAME || '():Недопустимые параметры I_xxx_ID = I_yyy_zzID = I_zzz_ID = NULL'; Везде используется varchar2 без указания длины. И при этом на одном из соединений падает с ошибкой: Код: plsql 1. 2. 3. При этом в других вариантах соединений - все ок. Внимание, вопрос: Чем лимитировано ограничение длины varchar2 в отсутствие ограничений? Явно что-то творится на стороне клиента/иных параметров соединений. Предложения переписать на указание явной длины можете оставить при себе. Мне интересно, где и как может происходить ограничение. Мануал и гугл ничего не дал в понимании ДАННОЙ ситуации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2018, 16:00 |
|
||
|
Чем лимитируется длина varchar2, если в скобках ничего не указано?
|
|||
|---|---|---|---|
|
#18+
Было подозрение на ограничение SQLPlus, но: - на других sqlplus все работает, через SQL Developer-Alt-F10 все работает, а вот там конкретно - неа. - повторяется в более коротком случае: ORA-06502: PL/SQL: numeric or value error: character string buffer too small ORA-06512: at "ttt2.PKG_KIT_xxxx", line 111 ORA-06512: at line 1 в строке V_PROCNAME PROC_DICT.PROCD_NAME%TYPE := 'PKG_KIT_xxxx.SP_GET'; O_ERR := V_PROCNAME || '():Недопустимые параметры I_kkk_ID = NULL'; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2018, 16:04 |
|
||
|
Чем лимитируется длина varchar2, если в скобках ничего не указано?
|
|||
|---|---|---|---|
|
#18+
HawkmoonМануал и гугл ничего не дал в понимании ДАННОЙ ситуации.Потому что использование variable varchar2 без указания длины не документировано, но по аналогии с char можно предположить, что длина 1 символ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2018, 16:17 |
|
||
|
Чем лимитируется длина varchar2, если в скобках ничего не указано?
|
|||
|---|---|---|---|
|
#18+
HawkmoonБыло подозрение на ограничение SQLPlus, но: - на других sqlplus все работает, через SQL Developer-Alt-F10 все работает, а вот там конкретно - неа. - повторяется в более коротком случае: ORA-06502: PL/SQL: numeric or value error: character string buffer too small ORA-06512: at "ttt2.PKG_KIT_xxxx", line 111 ORA-06512: at line 1 в строке V_PROCNAME PROC_DICT.PROCD_NAME %TYPE := 'PKG_KIT_xxxx.SP_GET'; O_ERR := V_PROCNAME || '():Недопустимые параметры I_kkk_ID = NULL'; этим и лимитируется ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2018, 16:27 |
|
||
|
Чем лимитируется длина varchar2, если в скобках ничего не указано?
|
|||
|---|---|---|---|
|
#18+
-2-, >>что длина 1 символ. Почему прокатывает из одних SQLPlus сеансов и не прокатывает из других? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2018, 09:52 |
|
||
|
Чем лимитируется длина varchar2, если в скобках ничего не указано?
|
|||
|---|---|---|---|
|
#18+
orawishHawkmoonБыло подозрение на ограничение SQLPlus, но: - на других sqlplus все работает, через SQL Developer-Alt-F10 все работает, а вот там конкретно - неа. - повторяется в более коротком случае: ORA-06502: PL/SQL: numeric or value error: character string buffer too small ORA-06512: at "ttt2.PKG_KIT_xxxx", line 111 ORA-06512: at line 1 в строке V_PROCNAME PROC_DICT.PROCD_NAME %TYPE := 'PKG_KIT_xxxx.SP_GET'; O_ERR := V_PROCNAME || '():Недопустимые параметры I_kkk_ID = NULL'; этим и лимитируется PROC_DICT: PROCD_NAME VARCHAR2(61 CHAR) но падает то на присвоении переменной O_ERR! У которой длина не указана. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2018, 09:55 |
|
||
|
Чем лимитируется длина varchar2, если в скобках ничего не указано?
|
|||
|---|---|---|---|
|
#18+
Потому что так делать не надо -- поэтому и поведение неопределенное (наверняка и от NLS_LANG зависит) ORA-06502: PL/SQL: Numeric or Value Error When Assigning a Sqlplus Variable (Doc ID 1050612.6)The variable declared in SQL*Plus must have a length value if the variable type is varchar2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2018, 12:53 |
|
||
|
Чем лимитируется длина varchar2, если в скобках ничего не указано?
|
|||
|---|---|---|---|
|
#18+
Вячеслав Любомудров, авторПредложения переписать на указание явной длины можете оставить при себе. С таким утверждением бесполезно что-то советовать :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2018, 12:57 |
|
||
|
Чем лимитируется длина varchar2, если в скобках ничего не указано?
|
|||
|---|---|---|---|
|
#18+
HawkmoonПредложения переписать на указание явной длины можете оставить при себе. Сделай неявную длину 4000 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2018, 13:08 |
|
||
|
Чем лимитируется длина varchar2, если в скобках ничего не указано?
|
|||
|---|---|---|---|
|
#18+
Hawkmoon, я б сделал так там где падает к переменной добавлял по одному символу, и определил в какой именно момент слетает а дальше уже б искал почему, напр из-за нлс 1) V_PROCNAME 2) O_ERR если 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. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2018, 14:15 |
|
||
|
Чем лимитируется длина varchar2, если в скобках ничего не указано?
|
|||
|---|---|---|---|
|
#18+
envHawkmoonПредложения переписать на указание явной длины можете оставить при себе. Сделай неявную длину 4000 как? ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2018, 14:16 |
|
||
|
Чем лимитируется длина varchar2, если в скобках ничего не указано?
|
|||
|---|---|---|---|
|
#18+
Stax, Заменить обесскобленный varchar2 на varchar2(4000), а byte или char останется неявным. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2018, 14:40 |
|
||
|
Чем лимитируется длина varchar2, если в скобках ничего не указано?
|
|||
|---|---|---|---|
|
#18+
orawish этим и лимитируется Гонишь :) Утенок прав. Хост-переменная, прибитая к O_ERR, объявлена без длины -> по факту выделяется 1 (символ или байт - в зависимости от NLS_LENGTH_SEMANTICS). Hawkmoon-2-, >>что длина 1 символ. Почему прокатывает из одних SQLPlus сеансов и не прокатывает из других? Не документировано => никто никому ничего не обещал. Может от версии SQL*Plus зависит, может от платформы, а может от погоды в Индии. Или вообще не SQL*Plus используете там, где "прокатывает". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2018, 14:59 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=39644516&tid=1883988]: |
0ms |
get settings: |
10ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
185ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
2ms |
| others: | 248ms |
| total: | 529ms |

| 0 / 0 |
