Oracleデータベースに関数があります。デルフィから呼ぶ必要があります。私は次のコードを使用します:
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
、つまり:RES:=Search(sysdate);
、正常に動作します。
では、どうすればタイプの「in」パラメータをDATE
delphiからoracle関数に渡すことができますか?
Oracleストアド関数が呼び出されたときにORA-06550が見つかりました。。ただし、これはKylixPascalIDEに関連しています。デルファイでも同じ振る舞いをすることが期待されていますか?関数の代わりにoracleプロシージャを使用しようとしませんでした。たぶん、この問題は他の方法で解決することができます...