我有一個查詢。作爲字符而不是日期的系統日期
我有一個配置表AB其中行被標記爲「SYSDATE-360」
col1 ||col2
AB || sysdate-360
BC || sysdate -2
當我寫一個程序以從配置表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:在line 1 01722. 00000 - 「無效號碼」 *原因:
*操作:
的SYSDATE -360被認爲是焦炭,但沒有時間SYSDATE本身就是一個日期嗎?
請幫忙。
推測'load_date'是日期類型。由於你的光標查詢看起來不正確,你的模糊處理有點讓人困惑 - 它真的來自config_table,其中col1 = AB'?並且您沒有指出哪條線對應於錯誤中的第46行。什麼數據類型是'col1',就像你讓它看起來像一個varchar?如果它是一個字符串,「AB」是一個數字,而且你沒有用引號括起來,並且有'col1'值是*不是*數字?我認爲錯誤來自遊標查詢,與日期無關...... –
我認爲你應該調試'v_sql'中的值,並將其傳遞給'immediate immediate'。這可能會揭示你的問題,比如'v_sql'中缺少空格。 –