Hello,
Thank you for all your hard work!
I have come across an issue, and a resolution for the json dynamic package. The problem occurs when a select item exceeds 30 characters (combination of column names and functions). It is easiest described in an example:
setserveroutputon;droptabledata_modelers_love_long_names;createtabledata_modelers_love_long_names(long_column_names_also_lovedvarchar2(30));insertintodata_modelers_love_long_namesvalues(' test');commit;declareretjson_list;beginret:=json_dyn.executeList('select ltrim(long_column_names_also_loved) from data_modelers_love_long_names');ret.print;end;/
Table created.
1 row created.
Commit complete.
declare
*
ERROR at line 1:
ORA-06502: PL/SQL: numeric or value error: dbms_sql.describe_columns overflow,
col_name_len=35. Use describe_columns2
ORA-06512: at "SYS.DBMS_SQL", line 1938
ORA-06512: at "VMDBDEV.JSON_DYN", line 64
ORA-06512: at line 4
Hello,
Thank you for all your hard work!
I have come across an issue, and a resolution for the json dynamic package. The problem occurs when a select item exceeds 30 characters (combination of column names and functions). It is easiest described in an example:
Table created.
1 row created.
Commit complete.
declare
*
ERROR at line 1:
ORA-06502: PL/SQL: numeric or value error: dbms_sql.describe_columns overflow,
col_name_len=35. Use describe_columns2
ORA-06512: at "SYS.DBMS_SQL", line 1938
ORA-06512: at "VMDBDEV.JSON_DYN", line 64
ORA-06512: at line 4
The fix is to follow the advice in the ERROR message.
Don`t Ask: rcsdiff -r1.1 -r1.2 json_dyn.sql
===================================================================
RCS file: RCS/json_dyn.sql,v
retrieving revision 1.1
retrieving revision 1.2
diff -r1.1 -r1.2
100c100
< l_dtbl dbms_sql.desc_tab;
--
> l_dtbl dbms_sql.desc_tab2;
119c119
< dbms_sql.describe_columns(l_cur, l_cnt, l_dtbl);
--
> dbms_sql.describe_columns2(l_cur, l_cnt, l_dtbl);
194c194
< l_dtbl dbms_sql.desc_tab;
--
> l_dtbl dbms_sql.desc_tab2;
215c215
< dbms_sql.describe_columns(l_cur, l_cnt, l_dtbl);
--
> dbms_sql.describe_columns2(l_cur, l_cnt, l_dtbl);
After mod and recompile,retest is good:
[{
"LTRIM(LONG_COLUMN_NAMES_ALSO_LOVED)" : "test"
}]
Cheers