Home » Applications » Other Application Suites » Delphi (doa) generates ora-06502 error
Delphi (doa) generates ora-06502 error [message #475484] |
Wed, 15 September 2010 05:13 |
bibber
Messages: 38 Registered: August 2006
|
Member |
|
|
Hi,
I'm using a delphi with direct-oracle-access components to communicate with a oracle 10g database. In an oracle package I have created a function that builds up a select-statement and returns it as a varchar2.
Since, the return value can be longer than 4000 characters, I have changed it to a clob. If I call the function directly in SQL*PLUS, I succesfully get the return string. However, when I call the function in my delphi TOraclepackage component, I get the following error: "ORA-06502: PL/SQL: numeric or value error: character string buffer too small".
To my opinion, the delphi variables are the problem, since in SQL*PLUS no problems occurs.
How can I solve my delphi-oracle problem?
thnx, Rob
--ORACLE FUNCTION IN PACKAGE
function geef_sql
( p_owner varchar2
, p_table_name varchar2
, p_srid varchar2
, p_export_geometrie varchar2) return clob
is
--
cursor c1
is
select decode(data_type, 'VARCHAR2', '||''|$$'' || gvi_exp2sqlldr.strip(' || column_name || ') || ''$$'' '
, 'CHAR', '||''|$$'' || gvi_exp2sqlldr.strip(' || column_name || ') || ''$$'' '
, 'NUMBER', '||''|'' || to_char(' || column_name || ') '
, 'DATE', '||''|'' || to_char(' || column_name || ', ''YYYY-MM-DD HH24:MI:SS'' ) '
) as attribuut
from all_tab_columns
where table_name = upper(p_table_name)
and owner = upper(p_owner)
and data_type not in ('SDO_GEOMETRY', 'CLOB')
order by column_id;
--
cursor c2
is
select ', ' || column_name as attribuut
from all_tab_columns
where table_name = upper(p_table_name)
and owner = upper(p_owner)
and data_type = 'CLOB'
order by column_id;
--
cursor c3
is
select ', gvi_exp2sqlldr.geef_geometrie_clob(' || nvl(p_srid, 'NULL') || ',' || column_name || ') ' as attribuut
from all_tab_columns
where table_name = upper(p_table_name)
and owner = upper(p_owner)
and data_type = 'SDO_GEOMETRY'
order by column_id;
--
cursor c4
is
select ', gvi_exp2sqlldr.geef_geometrie_wkt(' || nvl(p_srid, 'NULL') || ',' || column_name || ') ' as attribuut
from all_tab_columns
where table_name = upper(p_table_name)
and owner = upper(p_owner)
and data_type = 'SDO_GEOMETRY'
order by column_id;
--
l_sql clob;
--
begin
--
for r1 in c1 loop
l_sql := l_sql || r1.attribuut;
end loop;
--
for r2 in c2 loop
l_sql := l_sql || r2.attribuut || ' as CLOB_' || c2%rowcount;
end loop;
--
if (upper(p_export_geometrie) = 'WKT') then
-- exporteren als wkt
for r4 in c4 loop
l_sql := l_sql || r4.attribuut || ' as GEOMETRIE_' || c4%rowcount;
end loop;
else
-- exporteren als sqlldr
for r3 in c3 loop
l_sql := l_sql || r3.attribuut || ' as GEOMETRIE_' || c3%rowcount;
end loop;
end if;
--
l_sql := 'select null ' || l_sql || ' from ' || p_owner || '.' || p_table_name;
--
return(l_sql);
--
end;
// delphi code
var
l_sql: String;
begin
......
l_sql := OraclePackage1.CallStringFunction('geef_sql', ['p_owner', g_owner, 'p_table_name', p_tabelnaam, 'p_srid', g_srid, 'p_export_geometrie', g_export_geometrie ]);
|
|
|
Goto Forum:
Current Time: Tue Dec 03 11:48:15 CST 2024
|