我在 oracle 数据库中有一个函数。我需要从delphi调用它。我使用以下代码:
procedure TForm1.Run;
var
q:TADOQuery;
begin
q:=TADOQuery.Create(nil);
q.Connection:=ADOConnection1;
q.ParamCheck:=false;
q.SQL.Add('BEGIN');
q.SQL.Add(' :RES:=Search(:P_DATE);');
q.SQL.Add('END;');
q.Parameters.AddParameter.Name:='P_DATE';
q.Parameters.ParamByName('P_DATE').Direction:=pdInput;
q.Parameters.ParamByName('P_DATE').DataType:=ftDate;
q.Parameters.ParamByName('P_DATE').Value:=Now;
q.Parameters.AddParameter.Name:='RES';
q.Parameters.ParamByName('RES').DataType:=ftFloat;
q.Parameters.ParamByName('RES').Direction:=pdOutput;
q.Parameters.ParamByName('RES').Value:=1;
q.ExecSQL;
//...
我得到ora-06550
错误,说invalid number or type of parameters
。如果我将P_DATE
参数更改为sysdate
, ie :RES:=Search(sysdate);
,它工作正常。
那么如何将类型的“in”参数DATE
从delphi传递给oracle函数呢?
调用 Oracle 存储函数时发现ORA-06550。. 然而,这与 Kylix Pascal IDE 有关。我是否希望遇到与 delphi 相同的行为?没有尝试使用 oracle 过程而不是函数。也许这个问题可以通过其他方式解决......