私はクエリを持っています。日付の代わりに文字としてのSysdate
iは使用設定テーブルABから日付値を取得する手順を記述する場合、私は
col1 ||col2
AB || sysdate-360
BC || sysdate -2
の行が「SYSDATE-360」としてマークされている設定テーブルABを有します。
v_date varchar(20);
cursor c1 as
select col2 from AB;
then
for ab_date in c1
loop
select ab_date.col2 into v_date from dual;
v_sql := 'delete from any_table where load_date <='||v_date;
execute immediate v_sql ;
commit;
end loop;
手順がコンパイルされているが、私は実行すると、私はエラー
ORA-01722の下に取得しています:無効な数 ORA-06512: "手順" で、ライン46 ORA-06512:行で1 01722. 00000 - "無効な番号" *原因:
処置:
SYSDATE -360は、SYSDATEは、日付の右自体であるため、charとしてではなく、日付として考えられていますか?
助けてください。
恐らく 'load_date'は日付型です。あなたの難読化はカーソルクエリが正しく見えないので少し混乱させます - 本当に 'from config_table where col1 = AB'ですか?エラーの行46に対応する行を指定していません。あなたはそれをvarcharのように見せたので、どのデータ型が 'col1'ですか?それが文字列で、 'AB'が数字で、あなたが引用符で囲まず、' col1'の値が*ではない場合は?私は、エラーがカーソルクエリからだと思います。日付とは関係ありません。 –
''即時実行 'に渡す 'v_sql'の値をデバッグするべきだと思います。これはおそらく、 'v_sql'のスペースがないなど、あなたの問題を明らかにするでしょう。 –