我在oracle數據庫中有一個函數。我需要從delphi中調用它。我使用下面的代碼:如何將類型DATE的參數傳遞給函數
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);
,則它工作正常。
那麼我怎樣才能通過類型DATE
的「in」參數從delphi的oracle函數?
Found ORA-06550 when Oracle stored function is called.。但是這涉及到Kylix Pascal IDE。我預計會遇到與delphi相同的行爲嗎?沒有嘗試使用oracle過程而不是函數。也許這個問題是可以解決的一些怎麼回事...
當我使用這個我得到ora-01840,說_input值不夠日期格式_我做錯了什麼? – horgh
此外,它不會將函數結果代碼傳遞給RES參數 – horgh
您作爲日期傳遞的字符串與給定的格式(在to_date中)不匹配。例如,要使用上面使用的格式掩碼通過2012年12月29日,字符串必須是2012年12月29日。您使用的字符串必須短於提供的掩碼。 –