powered by simpleCommunicator - 2.0.30     © 2024 Programmizd 02
Map
Форумы / Oracle [игнор отключен] [закрыт для гостей] / ORA-06502
25 сообщений из 65, страница 2 из 3
ORA-06502
    #40134891
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
booby
gpu
booby,

SQL> ALTER SESSION SET NLS_LENGTH_SEMANTICS=CHAR
2 /

[/src]


Следует ли понимать, что когда вы свой пакет компилируете, именно эта семантика вами всегда гарантируется?
Что покажет desc при байтной семантике.

точнее, когда создаете и представление и пакет при байтной семантике
...
Рейтинг: 0 / 0
ORA-06502
    #40134892
gpu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
booby
gpu
booby,

SQL> ALTER SESSION SET NLS_LENGTH_SEMANTICS=CHAR
2 /

[/src]


Следует ли понимать, что когда вы свой пакет компилируете, именно эта семантика вами всегда гарантируется?
Что покажет desc при байтной семантике.

То что и должен>
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
SQL> ALTER SESSION SET NLS_LENGTH_SEMANTICS=BYTE;

Session altered.

SQL> desc  GPU_ISH_EXPED_5;
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 ITEM_SHIP_ID                              NOT NULL NUMBER(12)
 IDENT_SHORT_DESC                                   VARCHAR2(4000 CHAR)
...
Рейтинг: 0 / 0
ORA-06502
    #40134893
gpu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov

Судя по твоим цитатам, ты не в курсе, что NLS_LENGTH_SEMANTICS работает только
на новосоздаваемые объекты и не меняет уже существующих.


Я в курсе,
предлагаю оставить NLS_LENGTH_SEMANTICS для сессии в покое , пусть остается CHAR
и вернуться к вопросу что за хрень происходить когда все и везде CHAR?
...
Рейтинг: 0 / 0
ORA-06502
    #40134894
gpu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
booby
booby
пропущено...


Следует ли понимать, что когда вы свой пакет компилируете, именно эта семантика вами всегда гарантируется?
Что покажет desc при байтной семантике.

точнее, когда создаете и представление и пакет при байтной семантике

В данном кейсе Я не создаю представление и пакет при байтной семантике. Все CHAR.
...
Рейтинг: 0 / 0
ORA-06502
    #40134896
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gpu
Dimitry Sibiryakov

Судя по твоим цитатам, ты не в курсе, что NLS_LENGTH_SEMANTICS работает только
на новосоздаваемые объекты и не меняет уже существующих.


Я в курсе,
предлагаю оставить NLS_LENGTH_SEMANTICS для сессии в покое , пусть остается CHAR
и вернуться к вопросу что за хрень происходить когда все и везде CHAR?


почему вы решили, что вот это

Код: plsql
1.
2.
 return_desc VARCHAR2(4000);
  v_tmp       VARCHAR2(3000);



"всегда и везде char"?
Для приличия бы неплохо явно написать об этом: v_tmp VARCHAR2(3000 CHAR);
...
Рейтинг: 0 / 0
ORA-06502
    #40134897
gpu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
booby
gpu
пропущено...


Я в курсе,
предлагаю оставить NLS_LENGTH_SEMANTICS для сессии в покое , пусть остается CHAR
и вернуться к вопросу что за хрень происходить когда все и везде CHAR?


почему вы решили, что вот это

Код: plsql
1.
2.
 return_desc VARCHAR2(4000);
  v_tmp       VARCHAR2(3000);



"всегда и везде char"?
Для приличия бы неплохо явно написать об этом: v_tmp VARCHAR2(3000 CHAR);

Я такого не говорил.
Код: plsql
1.
2.
3.
4.
5.
6.
7.
>alter package GPU_PCK2 compile NLS_LENGTH_SEMANTICS=CHAR;
SELECT C.name, C.type, c.NLS_LENGTH_SEMANTICS
FROM DBA_PLSQL_OBJECT_SETTINGS C
WHERE name in ('GPU_PCK2')
ORDER BY C.name;
GPU_PCK2	PACKAGE	CHAR
GPU_PCK2	PACKAGE BODY	CHAR


я возможно заблуждаюсь, но мне кажется что в таком случае ето будет скомпилировано в
Код: plsql
1.
2.
 return_desc VARCHAR2(4000 VARCHAR2);
  v_tmp       VARCHAR2(3000 VARCHAR2);


или нет?
...
Рейтинг: 0 / 0
ORA-06502
    #40134898
Asmodeus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
gpu,


А что выдает
Код: plsql
1.
2.
select column_name, data_length, char_used from user_tab_columns
where table_name = 'GPU_ISH_EXPED_5';


после создания представления c NLS_LENGTH_SEMANTICS=char?
...
Рейтинг: 0 / 0
ORA-06502
    #40134899
gpu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Asmodeus
gpu,


А что выдает
Код: plsql
1.
2.
select column_name, data_length, char_used from user_tab_columns
where table_name = 'GPU_ISH_EXPED_5';


после создания представления c NLS_LENGTH_SEMANTICS=char?

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
QL> select column_name, data_length, char_used from user_tab_columns where table_name = 'GPU_ISH_EXPED_5';

COLUMN_NAME
                 DATA_LENGTH C
-------------------------------------------------------------------------------------------------------------------------------- ----------- -
ITEM_SHIP_ID
                          22
IDENT_SHORT_DESC
                        4000 C
...
Рейтинг: 0 / 0
ORA-06502
    #40134904
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gpu,

если из курсора убрать table, то у меня перестает слетать
я понимаю зачем table и что ето нарушает логику
но может Вас натолкнет на мысль, почему
причем не важно какой табле, напр sys.odcinumberlist и начинает слетать
Код: 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.
create or replace package body GPU_PCK2 as
function ident_desc2(p_ident  IN NUMBER,p_nls_id IN NUMBER, p_proj_id IN VARCHAR2 default null) RETURN VARCHAR2
is
  return_desc VARCHAR2(4000);
  v_tmp       VARCHAR2(3000);
  v_layout_short    gpu_ident2.layout_short%TYPE;
  CURSOR ccl IS SELECT layout_short FROM gpu_ident2 ;
begin
    OPEN ccl;
    FETCH ccl INTO v_layout_short;
    CLOSE ccl;
    v_tmp := dbms_lob.substr(v_layout_short, 3000,1);
    return_desc  := v_tmp;
    return return_desc;
end ident_desc2;
function hmm_1(p_col_list IN gpu_type_varchar2_tab, p_item_ship_ids IN gpu_type_numbers, p_nls_id IN number) return gpu_ref_cursor
is
    v_cur gpu_ref_cursor;
    v_tmp number(12);
begin
 /*
    open v_cur for  'select ish.item_ship_id, IDENT_SHORT_DESC from GPU_ISH_EXPED_5 ish,' ||    
    'TABLE(CAST(:1 AS gpu_type_numbers)) ish_ids' || 
    ' where ish.item_ship_id = ish_ids.COLUMN_VALUE'
    USING p_item_ship_ids;    
*/    
   v_tmp:=p_item_ship_ids(1);
    open v_cur for  'select ish.item_ship_id, IDENT_SHORT_DESC from GPU_ISH_EXPED_5 ish,' ||    
    '(select :1 COLUMN_VALUE from dual) ish_ids' || 
    ' where ish.item_ship_id = ish_ids.COLUMN_VALUE'
    USING v_tmp;    

      return v_cur;
end hmm_1;
end GPU_PCK2;
/




.....
stax
...
Рейтинг: 0 / 0
ORA-06502
    #40134905
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
booby

точнее, когда создаете и представление и пакет при байтной семантике


Да нет, тут похоже на баг в операторе TABLE:


Код: 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.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
SQL> select value from nls_session_parameters where parameter = 'NLS_LENGTH_SEMANTICS';

VALUE
--------------------------------------------------------------------------------
BYTE

SQL> ALTER SESSION SET NLS_LENGTH_SEMANTICS=CHAR
  2  /

Session altered.

SQL> create type gpu_type_numbers AS TABLE OF NUMBER(12)
  2  /

Type created.

SQL>
SQL> create type gpu_type_varchar2_tab as table of VARCHAR2(4000)
  2  /

Type created.

SQL> create table gpu_ident2(ITEM_SHIP_ID number(12,0) not null, layout_short CLOB)
  2  /

Table created.

SQL> insert into gpu_ident2(ITEM_SHIP_ID,layout_short)
  2  values(44413615,
  3  'Yaskawa VSD Spare Parts kit: Power Cell Control Board Isolation Board Relay Board Power Supplies 5/15Vdc and 24Vdc Fan Detect Board Cooling Fan Air Filter (Small) as required Air Filter (Large) Digital Operator Three main fuses.
  4  POWER CELL MV2 330A  3FUSE,  Qty in VFD 6EA, Price book PN UUX001104,  USD$45391.05,  Qty in KIT 1EA,  USD$45391.05.
  5  FAN 200-277VAC 2.3A S3G400-KC22-51, Qty in VFD 6EA, Price book PN UUX001109,  USD$2835, Qty in KIT 1EA,  USD$2,835.00.
  6  FILTER CASSETTE 398 x 898 FLGS31050-B, Qty in VFD 10EA, Price book PN UUX001111,  USD$1513.35, Qty in KIT 2EA,  USD$1513.35.
  7  CONTROL BOARD JEBC-61304-INV 30400- S0100, Qty in VFD 1EA, Price book PN  100-064-008,  USD$3801.60, Qty included in KIT  1EA,  USD$3801.60. RELAY BOARD 120V 7910161-91321, Qty in VFD 1EA, Price book PN 100-088-860,  USD$1800.90, Qty in KIT  1EA, USD$1800.90. FAN DTECT BRD JEBC-61703-0 7910161-70300, Qty in VFD 1EA,  Price book PN 100-064-013,   USD$540, Qty included in KIT  1EA,  USD$540.00. ISOLATION BOARD JEBC-61701, Qty in VFD 1EA, Price book PN 100-064-429,  USD$2070.90, Qty in KIT 1EA, USD$2070.90. POWER SUPPLY 200V +5/+-15VDC PMC30E-2-C, Qty in VFD  1EA, Price book PN 300-034-594,  USD$399.60, Qty in KIT  1EA,  USD$399.60. POWER SUPPLY 200V 24V PBA50F-24-C, Qty in VFD 1EA, Price book PN 300-034-595, USD$365.85, Qty in KIT 1EA,  USD$365.85. OPERATOR, JVOP-180 MV2, LCD, CE PRG 0102, Qty in VFD 1EA, Price book PN 100-092-072,  USD$260.55, Qty in KIT 1EA,  USD$260.55. Unit prices above reflect individual purchases.')
  8  /

1 row created.

SQL> commit
  2  /

Commit complete.

SQL> create package GPU_PCK2 as
  2  TYPE gpu_ref_cursor  IS REF CURSOR;
  3  function ident_desc2(p_ident  IN NUMBER,p_nls_id IN NUMBER, p_proj_id IN VARCHAR2 default null) RETURN VARCHAR2;
  4  function hmm_1(p_col_list IN gpu_type_varchar2_tab, p_item_ship_ids IN gpu_type_numbers, p_nls_id IN number) return gpu_ref_cursor;
  5  end GPU_PCK2;
  6  /

Package created.

SQL> create or replace package body GPU_PCK2 as
  2  function ident_desc2(p_ident  IN NUMBER,p_nls_id IN NUMBER, p_proj_id IN VARCHAR2 default null) RETURN VARCHAR2
  3  is
  4    return_desc VARCHAR2(4000);
  5    v_tmp       VARCHAR2(3000);
  6    v_layout_short    gpu_ident2.layout_short%TYPE;
  7    CURSOR ccl IS SELECT layout_short FROM gpu_ident2 ;
  8  begin
  9      OPEN ccl;
 10      FETCH ccl INTO v_layout_short;
 11      CLOSE ccl;
 12      v_tmp := dbms_lob.substr(v_layout_short, 3000,1);
 13      return_desc  := v_tmp;
 14      return return_desc;
 15  end ident_desc2;
 16  function hmm_1(p_col_list IN gpu_type_varchar2_tab, p_item_ship_ids IN gpu_type_numbers, p_nls_id IN number) return gpu_ref_cursor
 17  is
 18      v_cur gpu_ref_cursor;
 19  begin
 20      open v_cur for  'select ish.item_ship_id, IDENT_SHORT_DESC from GPU_ISH_EXPED_5 ish,' ||
 21      'TABLE(CAST(:1 AS gpu_type_numbers)) ish_ids' ||
 22      ' where ish.item_ship_id = ish_ids.COLUMN_VALUE'
 23      USING p_item_ship_ids;
 24      return v_cur;
 25  end hmm_1;
 26  end GPU_PCK2;
 27  /

Package body created.

SQL> create or replace view GPU_ISH_EXPED_5("ITEM_SHIP_ID", "IDENT_SHORT_DESC") AS
  2    SELECT item_ship_id,
  3             GPU_PCK2.ident_desc2(1, 1) IDENT_SHORT_DESC
  4             from gpu_ident2
  5  /

View created.

SQL>




Т.е. все создано с NLS_LENGTH_SEMANTICS=CHAR. Теперь:

Код: 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.
select  ish.item_ship_id,
        IDENT_SHORT_DESC
  from  GPU_ISH_EXPED_5 ish
  where ish.item_ship_id = 44413615
/

ITEM_SHIP_ID
------------
IDENT_SHORT_DESC
------------------------------------------------------------------------------------------------------------------------------------
    44413615
Yaskawa VSD Spare Parts kit: Power Cell Control Board Isolation Board Relay Board Power Supplies 5/15Vdc and 24Vdc Fan Detect Board
Cooling Fan Air Filter (Small) as required Air Filter (Large) Digital Operator Three main fuses.
POWER CELL MV2 330A  3FUSE,  Qty in VFD 6EA, Price book PN UUX001104,  USD$45391.05,  Qty in KIT 1EA,  USD$45391.05.
FAN 200-277VAC 2.3A S3G400-KC22-51, Qty in VFD 6EA, Price book PN UUX001109,  USD$2835, Qty in KIT 1EA,  USD$2,835.00.
FILTER CASSETTE 398 x 898 FLGS31050-B, Qty in VFD 10EA, Price book PN UUX001111,  USD$1513.35, Qty in KIT 2EA,  USD$1513.35.
CONTROL BOARD JEBC-61304-INV 30400- S0100, Qty in VFD 1EA, Price book PN  100-064-008,  USD$3801.60, Qty included in KIT  1EA,  USD$
3801.60. RELAY BOARD 120V 7910161-91321, Qty in VFD 1EA, Price book PN 100-088-860,  USD$1800.90, Qty in KIT  1EA, USD$1800.90. FAN
DTECT BRD JEBC-61703-0 7910161-70300, Qty in VFD 1EA,  Price book PN 100-064-013,   USD$540, Qty included in KIT  1EA,  USD$540.00.
ISOLATION BOARD JEBC-61701, Qty in VFD 1EA, Price book PN 100-064-429,  USD$2070.90, Qty in KIT 1EA, USD$2070.90. POWER SUPPLY 200V
+5/+-15VDC PMC30E-2-C, Qty in VFD  1EA, Price book PN 300-034-594,  USD$399.60, Qty in KIT  1EA,  USD$399.60. POWER SUPPLY 200V 24V
PBA50F-24-C, Qty in VFD 1EA, Price book PN 300-034-595, USD$365.85, Qty in KIT 1EA,  USD$365.85. OPERATOR, JVOP-180 MV2, LCD, CE PRG
 0102, Qty in VFD 1EA, Price book PN 100-092-072,  USD$260.55, Qty in KIT 1EA,  USD$260.55. Unit prices above reflect individual pur
chases.


SQL>



Банально добавляем совершенно не связанный TABLE:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
select  ish.item_ship_id,
        IDENT_SHORT_DESC
  from  GPU_ISH_EXPED_5 ish,
        TABLE(SYS.ODCIDATELIST(SYSDATE))
  where ish.item_ship_id = 44413615
/
        IDENT_SHORT_DESC
      *
ERROR at line 2:
ORA-06502: PL/SQL: numeric or value error: character string buffer too small
ORA-06512: at line 1


SQL>



Меняем в пакете

Код: plsql
1.
dbms_lob.substr(v_layout_short, 3000,1);



на

Код: plsql
1.
dbms_lob.substr(v_layout_short, 1000,1);



и:

Код: 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.
select  ish.item_ship_id,
        IDENT_SHORT_DESC
  from  GPU_ISH_EXPED_5 ish,
        TABLE(SYS.ODCIDATELIST(SYSDATE))
  where ish.item_ship_id = 44413615
/

ITEM_SHIP_ID
------------
IDENT_SHORT_DESC
------------------------------------------------------------------------------------------------------------------------------------
    44413615
Yaskawa VSD Spare Parts kit: Power Cell Control Board Isolation Board Relay Board Power Supplies 5/15Vdc and 24Vdc Fan Detect Board
Cooling Fan Air Filter (Small) as required Air Filter (Large) Digital Operator Three main fuses.
POWER CELL MV2 330A  3FUSE,  Qty in VFD 6EA, Price book PN UUX001104,  USD$45391.05,  Qty in KIT 1EA,  USD$45391.05.
FAN 200-277VAC 2.3A S3G400-KC22-51, Qty in VFD 6EA, Price book PN UUX001109,  USD$2835, Qty in KIT 1EA,  USD$2,835.00.
FILTER CASSETTE 398 x 898 FLGS31050-B, Qty in VFD 10EA, Price book PN UUX001111,  USD$1513.35, Qty in KIT 2EA,  USD$1513.35.
CONTROL BOARD JEBC-61304-INV 30400- S0100, Qty in VFD 1EA, Price book PN  100-064-008,  USD$3801.60, Qty included in KIT  1EA,  USD$
3801.60. RELAY BOARD 120V 7910161-91321, Qty in VFD 1EA, Price book PN 100-088-860,  USD$1800.90, Qty in KIT  1EA, USD$1800.90. FAN
DTECT BRD JEBC-61703-0 7910161-70300, Qty in VFD 1EA,  Price book PN 100-064-013,   USD$540, Qty included in KIT  1EA,  USD$540.00.
ISOLATION BOAR


SQL>



Меняем в пакете

Код: plsql
1.
dbms_lob.substr(v_layout_short, 1000,1);



на

Код: plsql
1.
dbms_lob.substr(v_layout_short, 1001,1);



и опять ORA-06502.

SY.
...
Рейтинг: 0 / 0
ORA-06502
    #40134912
gpu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gpu
booby
пропущено...


почему вы решили, что вот это

Код: plsql
1.
2.
 return_desc VARCHAR2(4000);
  v_tmp       VARCHAR2(3000);



"всегда и везде char"?
Для приличия бы неплохо явно написать об этом: v_tmp VARCHAR2(3000 CHAR);

Я такого не говорил.
Код: plsql
1.
2.
3.
4.
5.
6.
7.
>alter package GPU_PCK2 compile NLS_LENGTH_SEMANTICS=CHAR;
SELECT C.name, C.type, c.NLS_LENGTH_SEMANTICS
FROM DBA_PLSQL_OBJECT_SETTINGS C
WHERE name in ('GPU_PCK2')
ORDER BY C.name;
GPU_PCK2	PACKAGE	CHAR
GPU_PCK2	PACKAGE BODY	CHAR


я возможно заблуждаюсь, но мне кажется что в таком случае ето будет скомпилировано в
Код: plsql
1.
2.
 return_desc VARCHAR2(4000 VARCHAR2);
  v_tmp       VARCHAR2(3000 VARCHAR2);


или нет?

или да, только что проверил
...
Рейтинг: 0 / 0
ORA-06502
    #40134914
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SYтут похоже на баг в операторе TABLE

Когда снимаешь лимит в 4000 байт в такой большой системе, очень просто забыть
пару мест.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
ORA-06502
    #40134915
gpu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SY
booby

точнее, когда создаете и представление и пакет при байтной семантике


Да нет, тут похоже на баг в операторе TABLE:


Код: 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.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
SQL> select value from nls_session_parameters where parameter = 'NLS_LENGTH_SEMANTICS';

VALUE
--------------------------------------------------------------------------------
BYTE

SQL> ALTER SESSION SET NLS_LENGTH_SEMANTICS=CHAR
  2  /

Session altered.

SQL> create type gpu_type_numbers AS TABLE OF NUMBER(12)
  2  /

Type created.

SQL>
SQL> create type gpu_type_varchar2_tab as table of VARCHAR2(4000)
  2  /

Type created.

SQL> create table gpu_ident2(ITEM_SHIP_ID number(12,0) not null, layout_short CLOB)
  2  /

Table created.

SQL> insert into gpu_ident2(ITEM_SHIP_ID,layout_short)
  2  values(44413615,
  3  'Yaskawa VSD Spare Parts kit: Power Cell Control Board Isolation Board Relay Board Power Supplies 5/15Vdc and 24Vdc Fan Detect Board Cooling Fan Air Filter (Small) as required Air Filter (Large) Digital Operator Three main fuses.
  4  POWER CELL MV2 330A  3FUSE,  Qty in VFD 6EA, Price book PN UUX001104,  USD$45391.05,  Qty in KIT 1EA,  USD$45391.05.
  5  FAN 200-277VAC 2.3A S3G400-KC22-51, Qty in VFD 6EA, Price book PN UUX001109,  USD$2835, Qty in KIT 1EA,  USD$2,835.00.
  6  FILTER CASSETTE 398 x 898 FLGS31050-B, Qty in VFD 10EA, Price book PN UUX001111,  USD$1513.35, Qty in KIT 2EA,  USD$1513.35.
  7  CONTROL BOARD JEBC-61304-INV 30400- S0100, Qty in VFD 1EA, Price book PN  100-064-008,  USD$3801.60, Qty included in KIT  1EA,  USD$3801.60. RELAY BOARD 120V 7910161-91321, Qty in VFD 1EA, Price book PN 100-088-860,  USD$1800.90, Qty in KIT  1EA, USD$1800.90. FAN DTECT BRD JEBC-61703-0 7910161-70300, Qty in VFD 1EA,  Price book PN 100-064-013,   USD$540, Qty included in KIT  1EA,  USD$540.00. ISOLATION BOARD JEBC-61701, Qty in VFD 1EA, Price book PN 100-064-429,  USD$2070.90, Qty in KIT 1EA, USD$2070.90. POWER SUPPLY 200V +5/+-15VDC PMC30E-2-C, Qty in VFD  1EA, Price book PN 300-034-594,  USD$399.60, Qty in KIT  1EA,  USD$399.60. POWER SUPPLY 200V 24V PBA50F-24-C, Qty in VFD 1EA, Price book PN 300-034-595, USD$365.85, Qty in KIT 1EA,  USD$365.85. OPERATOR, JVOP-180 MV2, LCD, CE PRG 0102, Qty in VFD 1EA, Price book PN 100-092-072,  USD$260.55, Qty in KIT 1EA,  USD$260.55. Unit prices above reflect individual purchases.')
  8  /

1 row created.

SQL> commit
  2  /

Commit complete.

SQL> create package GPU_PCK2 as
  2  TYPE gpu_ref_cursor  IS REF CURSOR;
  3  function ident_desc2(p_ident  IN NUMBER,p_nls_id IN NUMBER, p_proj_id IN VARCHAR2 default null) RETURN VARCHAR2;
  4  function hmm_1(p_col_list IN gpu_type_varchar2_tab, p_item_ship_ids IN gpu_type_numbers, p_nls_id IN number) return gpu_ref_cursor;
  5  end GPU_PCK2;
  6  /

Package created.

SQL> create or replace package body GPU_PCK2 as
  2  function ident_desc2(p_ident  IN NUMBER,p_nls_id IN NUMBER, p_proj_id IN VARCHAR2 default null) RETURN VARCHAR2
  3  is
  4    return_desc VARCHAR2(4000);
  5    v_tmp       VARCHAR2(3000);
  6    v_layout_short    gpu_ident2.layout_short%TYPE;
  7    CURSOR ccl IS SELECT layout_short FROM gpu_ident2 ;
  8  begin
  9      OPEN ccl;
 10      FETCH ccl INTO v_layout_short;
 11      CLOSE ccl;
 12      v_tmp := dbms_lob.substr(v_layout_short, 3000,1);
 13      return_desc  := v_tmp;
 14      return return_desc;
 15  end ident_desc2;
 16  function hmm_1(p_col_list IN gpu_type_varchar2_tab, p_item_ship_ids IN gpu_type_numbers, p_nls_id IN number) return gpu_ref_cursor
 17  is
 18      v_cur gpu_ref_cursor;
 19  begin
 20      open v_cur for  'select ish.item_ship_id, IDENT_SHORT_DESC from GPU_ISH_EXPED_5 ish,' ||
 21      'TABLE(CAST(:1 AS gpu_type_numbers)) ish_ids' ||
 22      ' where ish.item_ship_id = ish_ids.COLUMN_VALUE'
 23      USING p_item_ship_ids;
 24      return v_cur;
 25  end hmm_1;
 26  end GPU_PCK2;
 27  /

Package body created.

SQL> create or replace view GPU_ISH_EXPED_5("ITEM_SHIP_ID", "IDENT_SHORT_DESC") AS
  2    SELECT item_ship_id,
  3             GPU_PCK2.ident_desc2(1, 1) IDENT_SHORT_DESC
  4             from gpu_ident2
  5  /

View created.

SQL>




Т.е. все создано с NLS_LENGTH_SEMANTICS=CHAR. Теперь:

Код: 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.
select  ish.item_ship_id,
        IDENT_SHORT_DESC
  from  GPU_ISH_EXPED_5 ish
  where ish.item_ship_id = 44413615
/

ITEM_SHIP_ID
------------
IDENT_SHORT_DESC
------------------------------------------------------------------------------------------------------------------------------------
    44413615
Yaskawa VSD Spare Parts kit: Power Cell Control Board Isolation Board Relay Board Power Supplies 5/15Vdc and 24Vdc Fan Detect Board
Cooling Fan Air Filter (Small) as required Air Filter (Large) Digital Operator Three main fuses.
POWER CELL MV2 330A  3FUSE,  Qty in VFD 6EA, Price book PN UUX001104,  USD$45391.05,  Qty in KIT 1EA,  USD$45391.05.
FAN 200-277VAC 2.3A S3G400-KC22-51, Qty in VFD 6EA, Price book PN UUX001109,  USD$2835, Qty in KIT 1EA,  USD$2,835.00.
FILTER CASSETTE 398 x 898 FLGS31050-B, Qty in VFD 10EA, Price book PN UUX001111,  USD$1513.35, Qty in KIT 2EA,  USD$1513.35.
CONTROL BOARD JEBC-61304-INV 30400- S0100, Qty in VFD 1EA, Price book PN  100-064-008,  USD$3801.60, Qty included in KIT  1EA,  USD$
3801.60. RELAY BOARD 120V 7910161-91321, Qty in VFD 1EA, Price book PN 100-088-860,  USD$1800.90, Qty in KIT  1EA, USD$1800.90. FAN
DTECT BRD JEBC-61703-0 7910161-70300, Qty in VFD 1EA,  Price book PN 100-064-013,   USD$540, Qty included in KIT  1EA,  USD$540.00.
ISOLATION BOARD JEBC-61701, Qty in VFD 1EA, Price book PN 100-064-429,  USD$2070.90, Qty in KIT 1EA, USD$2070.90. POWER SUPPLY 200V
+5/+-15VDC PMC30E-2-C, Qty in VFD  1EA, Price book PN 300-034-594,  USD$399.60, Qty in KIT  1EA,  USD$399.60. POWER SUPPLY 200V 24V
PBA50F-24-C, Qty in VFD 1EA, Price book PN 300-034-595, USD$365.85, Qty in KIT 1EA,  USD$365.85. OPERATOR, JVOP-180 MV2, LCD, CE PRG
 0102, Qty in VFD 1EA, Price book PN 100-092-072,  USD$260.55, Qty in KIT 1EA,  USD$260.55. Unit prices above reflect individual pur
chases.


SQL>



Банально добавляем совершенно не связанный TABLE:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
select  ish.item_ship_id,
        IDENT_SHORT_DESC
  from  GPU_ISH_EXPED_5 ish,
        TABLE(SYS.ODCIDATELIST(SYSDATE))
  where ish.item_ship_id = 44413615
/
        IDENT_SHORT_DESC
      *
ERROR at line 2:
ORA-06502: PL/SQL: numeric or value error: character string buffer too small
ORA-06512: at line 1


SQL>



Меняем в пакете

Код: plsql
1.
dbms_lob.substr(v_layout_short, 3000,1);



на

Код: plsql
1.
dbms_lob.substr(v_layout_short, 1000,1);



и:

Код: 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.
select  ish.item_ship_id,
        IDENT_SHORT_DESC
  from  GPU_ISH_EXPED_5 ish,
        TABLE(SYS.ODCIDATELIST(SYSDATE))
  where ish.item_ship_id = 44413615
/

ITEM_SHIP_ID
------------
IDENT_SHORT_DESC
------------------------------------------------------------------------------------------------------------------------------------
    44413615
Yaskawa VSD Spare Parts kit: Power Cell Control Board Isolation Board Relay Board Power Supplies 5/15Vdc and 24Vdc Fan Detect Board
Cooling Fan Air Filter (Small) as required Air Filter (Large) Digital Operator Three main fuses.
POWER CELL MV2 330A  3FUSE,  Qty in VFD 6EA, Price book PN UUX001104,  USD$45391.05,  Qty in KIT 1EA,  USD$45391.05.
FAN 200-277VAC 2.3A S3G400-KC22-51, Qty in VFD 6EA, Price book PN UUX001109,  USD$2835, Qty in KIT 1EA,  USD$2,835.00.
FILTER CASSETTE 398 x 898 FLGS31050-B, Qty in VFD 10EA, Price book PN UUX001111,  USD$1513.35, Qty in KIT 2EA,  USD$1513.35.
CONTROL BOARD JEBC-61304-INV 30400- S0100, Qty in VFD 1EA, Price book PN  100-064-008,  USD$3801.60, Qty included in KIT  1EA,  USD$
3801.60. RELAY BOARD 120V 7910161-91321, Qty in VFD 1EA, Price book PN 100-088-860,  USD$1800.90, Qty in KIT  1EA, USD$1800.90. FAN
DTECT BRD JEBC-61703-0 7910161-70300, Qty in VFD 1EA,  Price book PN 100-064-013,   USD$540, Qty included in KIT  1EA,  USD$540.00.
ISOLATION BOAR


SQL>



Меняем в пакете

Код: plsql
1.
dbms_lob.substr(v_layout_short, 1000,1);



на

Код: plsql
1.
dbms_lob.substr(v_layout_short, 1001,1);



и опять ORA-06502.

SY.

Ну вот наконец то , да я знаю , что без таблицы работает, и ето волебное число 1001 я тоже подобрал, но также работает если убрать аргумент p_proj_id из функции ident_desc2 а таблицу оставить, или взять оставить как есть и взять другую запись с другим item_ship_id
Просо мистика какая то!
...
Рейтинг: 0 / 0
ORA-06502
    #40134916
Asmodeus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
gpu,

Ну с NLS_LENGTH_SEMANTICS=CHAR и многобайтными кодировками есть ряд до сих пор не исправленных (и unpublished) багов на металинке. Вплоть до ORA-600.
...
Рейтинг: 0 / 0
ORA-06502
    #40134917
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SY

Да нет, тут похоже на баг в операторе TABLE:
SY.


оно как-то в связке table и IDENT_SHORT_DESC слетает

Код: plsql
1.
2.
 open v_cur for  'select ish.item_ship_id, IDENT_SHORT_DESC from GPU_ISH_EXPED_5 ish,' ||    
    'dual --TABLE(gpu_type_numbers(44413615)) ish_ids';



по отдельности и table и IDENT_SHORT_DESC работают

.....
stax
...
Рейтинг: 0 / 0
ORA-06502
    #40134918
gpu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov

SYтут похоже на баг в операторе TABLE

Когда снимаешь лимит в 4000 байт в такой большой системе, очень просто забыть
пару мест.

тзт нет забытих мест, приведенный кеис максимално близок к продакшену, ну разве что вью на 200 столбцов а не на два и в таблице миллионы записей а не одна
...
Рейтинг: 0 / 0
ORA-06502
    #40134920
gpu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stax
SY

Да нет, тут похоже на баг в операторе TABLE:
SY.


оно как-то в связке table и IDENT_SHORT_DESC слетает

Код: plsql
1.
2.
 open v_cur for  'select ish.item_ship_id, IDENT_SHORT_DESC from GPU_ISH_EXPED_5 ish,' ||    
    'dual --TABLE(gpu_type_numbers(44413615)) ish_ids';



по отдельности и table и IDENT_SHORT_DESC работают

.....
stax

О чем и речь и вызов пакета напрямую тоже будет работать
Код: plsql
1.
2.
 open v_cur for  'select ish.item_ship_id, GPU_PCK2.ident_desc2(1,1) IDENT_SHORT_DESC from GPU_ISH_EXPED_5 ish,' ||    
    'dual --TABLE(gpu_type_numbers(44413615)) ish_ids';
...
Рейтинг: 0 / 0
ORA-06502
    #40134921
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov

Когда снимаешь лимит в 4000 байт в такой большой системе, очень просто забыть
пару мест.


Код: plsql
1.
2.
3.
4.
5.
6.
SQL> show parameter max_string_size

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
max_string_size                      string      STANDARD
SQL>



И похоже баг тянется с 12.2. В 12.1 полет нормальный:

Код: 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.
SQL> select  version
  2    from  v$instance
  3  /

VERSION
-----------------
12.1.0.2.0

SQL> select  ish.item_ship_id,
  2          IDENT_SHORT_DESC
  3    from  GPU_ISH_EXPED_5 ish,
  4          TABLE(SYS.ODCIDATELIST(SYSDATE))
  5    where ish.item_ship_id = 44413615
  6  /

ITEM_SHIP_ID
------------
IDENT_SHORT_DESC
------------------------------------------------------------------------------------------------------------------------------------
    44413615
Yaskawa VSD Spare Parts kit: Power Cell Control Board Isolation Board Relay Board Power Supplies 5/15Vdc and 24Vdc Fan Detect Board
Cooling Fan Air Filter (Small) as required Air Filter (Large) Digital Operator Three main fuses.
POWER CELL MV2 330A  3FUSE,  Qty in VFD 6EA, Price book PN UUX001104,  USD$45391.05,  Qty in KIT 1EA,  USD$45391.05.
FAN 200-277VAC 2.3A S3G400-KC22-51, Qty in VFD 6EA, Price book PN UUX001109,  USD$2835, Qty in KIT 1EA,  USD$2,835.00.
FILTER CASSETTE 398 x 898 FLGS31050-B, Qty in VFD 10EA, Price book PN UUX001111,  USD$1513.35, Qty in KIT 2EA,  USD$1513.35.
CONTROL BOARD JEBC-61304-INV 30400- S0100, Qty in VFD 1EA, Price book PN  100-064-008,  USD$3801.60, Qty included in KIT  1EA,  USD$
3801.60. RELAY BOARD 120V 7910161-91321, Qty in VFD 1EA, Price book PN 100-088-860,  USD$1800.90, Qty in KIT  1EA, USD$1800.90. FAN
DTECT BRD JEBC-61703-0 7910161-70300, Qty in VFD 1EA,  Price book PN 100-064-013,   USD$540, Qty included in KIT  1EA,  USD$540.00.
ISOLATION BOARD JEBC-61701, Qty in VFD 1EA, Price book PN 100-064-429,  USD$2070.90, Qty in KIT 1EA, USD$2070.90. POWER SUPPLY 200V
+5/+-15VDC PMC30E-2-C, Qty in VFD  1EA, Price book PN 300-034-594,  USD$399.60, Qty in KIT  1EA,  USD$399.60. POWER SUPPLY 200V 24V
PBA50F-24-C, Qty in VFD 1EA, Price book PN 300-034-595, USD$365.85, Qty in KIT 1EA,  USD$365.85. OPERATOR, JVOP-180 MV2, LCD, CE PRG
 0102, Qty in VFD 1EA, Price book PN 100-092-072,  USD$260.55, Qty in KIT 1EA,  USD$260.55. Unit prices above reflect individual pur
chases.


SQL>



SY.
...
Рейтинг: 0 / 0
ORA-06502
    #40134922
gpu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SY,
Спасибо, побегу искать 12.1 может где и завалялось
...
Рейтинг: 0 / 0
ORA-06502
    #40134927
gpu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gpu
SY,
Спасибо, побегу искать 12.1 может где и завалялось

Sy что говорит
Код: plsql
1.
select value from NLS_DATABASE_PARAMETERS where parameter in ('NLS_RDBMS_VERSION', 'NLS_CHARACTERSET',  'NLS_LENGTH_SEMANTICS' )


на твоей 12.1?
...
Рейтинг: 0 / 0
ORA-06502
    #40134933
gpu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
странно у меня на 12.1 тоже неработает правда там все таки нлс немного другая
Код: 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.
select  version from  v$instance
12.1.0.2.0
>select value from NLS_DATABASE_PARAMETERS where parameter in ('NLS_RDBMS_VERSION', 'NLS_CHARACTERSET',  'NLS_LENGTH_SEMANTICS' )
12.1.0.2.0
CHAR
AL32UTF8
>ALTER SESSION SET NLS_LENGTH_SEMANTICS=CHAR
/

> select  ish.item_ship_id,
IDENT_SHORT_DESC
from  GPU_ISH_EXPED_5 ish,
TABLE(SYS.ODCIDATELIST(SYSDATE))
where ish.item_ship_id = 44413615
/

Error starting at line : 22 in command -
 select  ish.item_ship_id,
IDENT_SHORT_DESC
from  GPU_ISH_EXPED_5 ish,
TABLE(SYS.ODCIDATELIST(SYSDATE))
where ish.item_ship_id = 44413615
Error report -
ORA-06502: PL/SQL: numeric or value error: character string buffer too small
...
Рейтинг: 0 / 0
ORA-06502
    #40134935
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gpu
странно у меня на 12.1 тоже неработает


Значит не работает с какого-то патча в 12.1.

SY.
...
Рейтинг: 0 / 0
ORA-06502
    #40134941
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SY,

вообще нет ясности, точно тут Table виноват или нет.
(Может даже и Table, но косвенно, например, через притягивание компиляции объектных типов в запросе, и/или, может быть,
создание каких-то временных типов в базе.)
Вьюха может мержится при любой попытке джойна, фактически, с формированием новых описателей столбцов.
По хорошему, надо еще смотреть как dbms_sql опишет такой курсор.

Кроме того, я бы явный каст в месте вызова функции в представлении предложил попробовать.
...
Рейтинг: 0 / 0
ORA-06502
    #40134945
gpu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SY,

в DBA_REGISTRY_SQLPATCH пусто
и

exec sys.dbms_qopatch.get_sqlpatch_status;
то же ничего не дает.
возможно все таки неправильная нлс в базе.
бд с правильной пока не нашел
...
Рейтинг: 0 / 0
ORA-06502
    #40134958
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gpu
SY,

в DBA_REGISTRY_SQLPATCH пусто
и

exec sys.dbms_qopatch.get_sqlpatch_status;
то же ничего не дает.
возможно все таки неправильная нлс в базе.
бд с правильной пока не нашел



Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
SQL> connect / as sysdba
Connected.
SQL> SELECT PATCH_ID FROM DBA_REGISTRY_SQLPATCH;

no rows selected

SQL> exit
Disconnected from Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options

c:\temp>%ORACLE_HOME%\opatch\opatch lspatches
28810679;WINDOWS DB BUNDLE PATCH 12.1.0.2.190115(64bit):28810679

c:\temp>



SY.
...
Рейтинг: 0 / 0
25 сообщений из 65, страница 2 из 3
Форумы / Oracle [игнор отключен] [закрыт для гостей] / ORA-06502
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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