0

2つの日付を比較したいOracleクエリがありますが、それをoracle関数内に配置し、パラメータとして日付を渡すと、次のエラーが発生します。

ORA-01843: not a valid month
ORA-06512: at line 8
Process exited.

そしてこれは私の機能です:

Create or Replace 
FUNCTION GET_MAX_VALUE 
(
  PLAN_DATE IN DATE  
, LOC IN NUMBER  
, RES IN NUMBER  
, TIS IN NUMBER  
) RETURN NUMBER AS 
units number;
return_val number;
BEGIN
  select ts.booked_units into units from tsm_transaction_tbl ts
  where ts.location_id=loc and ts.resource_id=res and ts.ts_id=tis and ts.trans_date=to_date(plan_date,'mm/dd/yyyy');

  RETURN units;
END GET_MAX_VALUE;
4

1 に答える 1

2

to_date変数を囲む関数を削除しplan_dateます。

あなたはすでに型変数plan_dateとして渡しています。DATE関数を使用して日付に変換する必要はありませんto_date

to_date関数について言えば、文字列(varchar2タイプ)をdate必要な形式に従ってタイプに変換するために使用されます。関数の詳細についてto_dateは、Oracleのサイトを参照してください

コードは次のようになります。

Create or Replace 
FUNCTION GET_MAX_VALUE 
(
  PLAN_DATE IN DATE  
, LOC IN NUMBER  
, RES IN NUMBER  
, TIS IN NUMBER  
) RETURN NUMBER AS 
units number;
return_val number;
BEGIN
  select ts.booked_units into units from tsm_transaction_tbl ts
  where ts.location_id=loc
  and ts.resource_id=res
  and ts.ts_id=tis
  and ts.trans_date = plan_date;

  RETURN units;
END GET_MAX_VALUE;
于 2013-03-04T15:50:13.253 に答える