2017-09-12 16 views
2

私は、このPL/SQL文を持っている:のOracle APEX PL/SQLエラー

BEGIN 
    DELETE FROM REI_RETAIL_FACTOR_PARTS P 
    WHERE DEALER_NUMBER = :P13_FILTER_DEALER; 

    INSERT INTO REI_RETAIL_FACTOR_PARTS 
    (
     SELECT 
      RF.TEILE_NR as "PART_NR", 
      :P13_OVERWRITE_VALUE as "REQUESTED_RATE", 
      sysdate as "REQUEST_DATE", 
      :P13_FILTER_DEALER as "DEALER_NUMBER" 
     FROM REI_RETAIL_FACTOR RF 
     WHERE DEALER_NUMBER = :P13_FILTER_DEALER 
    ); 
END; 

エラーがある:

ORA-01861:リテラルが書式文字列と一致していません。

私は何もフォーマットしようとしないので、これは本当にイライラしています。 なぜこのエラーが発生するのですか?

+0

サウンズ。あなたは挿入のためのターゲット列を指定していません。日付カラムに日付以外の値( 'sysdate'ではなく)を挿入していますか? –

+0

これは暗黙の 'TO_NUMBER'でもあるかもしれないと私は思います。 – mustaccio

+0

True - 日付または数値列がこのように失敗する可能性があります。 –

答えて

0

ORA-01861:リテラルはフォーマット文字列と一致しません。

INSERT構文でエラーが発生しました。解決策:

a)のカラムリストを定義します!

BEGIN 
    DELETE FROM REI_RETAIL_FACTOR_PARTS P 
    WHERE DEALER_NUMBER = :P13_FILTER_DEALER; 

    INSERT INTO REI_RETAIL_FACTOR_PARTS(column_name1, ...) 
     SELECT 
      RF.TEILE_NR as "PART_NR", 
      :P13_OVERWRITE_VALUE as "REQUESTED_RATE", 
      sysdate as "REQUEST_DATE", 
      :P13_FILTER_DEALER as "DEALER_NUMBER" 
     FROM REI_RETAIL_FACTOR RF 
     WHERE DEALER_NUMBER = :P13_FILTER_DEALER; 
END; 

b)の(選択中の警告の列の順序が重要です)()を削除します。暗黙の `TO_DATE`が起動されているよう

BEGIN 
    DELETE FROM REI_RETAIL_FACTOR_PARTS P 
    WHERE DEALER_NUMBER = :P13_FILTER_DEALER; 

    INSERT INTO REI_RETAIL_FACTOR_PARTS 
     SELECT 
      RF.TEILE_NR as "PART_NR", 
      :P13_OVERWRITE_VALUE as "REQUESTED_RATE", 
      sysdate as "REQUEST_DATE", 
      :P13_FILTER_DEALER as "DEALER_NUMBER" 
     FROM REI_RETAIL_FACTOR RF 
     WHERE DEALER_NUMBER = :P13_FILTER_DEALER; 
END; 
+1

ありがとう! coloumnの順序が間違っていた、私は正しい名前を定義すれば十分だと思った。 –

関連する問題