In Oracle Strings in PL/SQL function calls can have a length up to 8000 Chars. (In Selects only 4000).
We have some functions which are sometimes called with param strings larger than 5000 chars.
Using 4.5 in the past we had no problem, but after changing to version 5.5 we allways get a ORA-01460 error, when using strings larger than 4000 chars.
This only happens if we use the .NET option (ver.: 5.5.1.18 ), using Ora.Net works correct.
Here an example code:
---------------------------
var res: String;
Str: String;
i: integer;
begin
OraSession.Connected:=true;
Str:='';
for i:=0 to 4001 do
Str:=Str+inttostr(i mod 10);
OraSQL.Params.Clear;
OraSQL.ParamCheck:=false;
OraSQL.SQL.Clear;
OraSQL.SQL.Add('begin :res:=:param1||''9''; end;');
with TOraParam(OraSQL.Params.CreateParam(ftString,'param1',ptInput)) do
begin
AsString:=Str;
Size:=6500;
end;
with TOraParam(OraSQL.Params.CreateParam(ftString,'res',ptInputOutput)) do
size:=6500;
OraSQL.Execute;
res:=OraSQL.ParamByname('res').AsString;
ShowMessage('In Length: '+inttostr(length(Str))+' Out length: '+inttostr(length(res)));
end;
thx
alexander danmayer