0
30日以上経過したデータを含むテーブルを切り捨てる文を作成しています。私は、SQL文を次のよう、それは次のと私の変換エラーを与えるとして今、私は私のPL/SQLブロックを構築に成功PL/SQL:数値または値のエラー:文字から数値への変換エラー
SELECT
*
FROM
xyz --table name
where
trunc(date_loaded_timestamp)<= TRUNC(SYSDATE) - 30;
実行使用し、30日より古いデータを参照してください。
BEGIN
FOR c IN(
select b.table_name,b.column_name from all_tab_columns b where b.table_name like 'STG_%' and column_name ='DATE_LOADED_TIMESTAMP') LOOP
EXECUTE IMMEDIATE ('truncate table ' || c.table_name || ' where ' || trunc(c.column_name) || '<= TRUNC(SYSDATE) - 30');
END LOOP;
END;
私はこのブロックを実行した後、私はどこで番号に文字を変換しなかったとして、私は混乱していますエラー
Error report -
ORA-06502: PL/SQL: numeric or value error: character to number conversion error
ORA-06512: at line 4
06502. 00000 - "PL/SQL: numeric or value error%s"
を取得します。 TO_NUMBER
を使用せず、データを選択するために使用した文がなぜPL/SQLが機能しないのですか?
どの部分がこのエラーをスローするか教えてください。 execute immediateを単純なステートメントに置き換えて、エラーが継続するかどうかを教えてください。 – sagi
@sagiエラーで更新された質問PL/SQLブロックを実行しています – Auguster
エラーを検出しました。クエリは '( 'truncate table' || c.table_name || 'trunc(' || c.column_name || ')<= TRUNC(SYSDATE) - 30') '。つまり、SQLと同じことをしたい場合です。しかしそれがエラーを解決するかどうかわからない。 – sagi