一時表をターゲット表に追加し、where句でその列を使用して、1つの表に対して使用しているストアド・プロシージャを使用して親表に新しいデータを挿入しようとしています。親テーブルから目標テーブルへの1対1の関係(以下のコードを参照)。 alter table add column文でエラーが発生し、IMPORT_NUMBERが無効な識別子になります。どんな助けでも大歓迎です。oracleにストアド・プロシージャを挿入するための一時列を追加する
EXECUTE IMMEDIATE
'ALTER TABLE TARGET_TABLE ADD IMPORT_NUMBER NUMBER';
INSERT
INTO
TARGET_TABLE(
existing_col_1,
existing_col_2,
existing_col_3,
IMPORT_NUMBER
)
SELECT
STAGED_TABLE.value1,
STAGED_TABLE.value2,
STAGED_TABLE.value3,
STAGED_TABLE.IMPORT_NUMBER
FROM
STAGED_TABLE
GROUP BY
IMPORT_NUMBER;
UPDATE
PARENT_TABLE
SET
target_table_id =(
SELECT
TARGET_TABLE.id
FROM
TARGET_TABLE
WHERE
TARGET_TABLE.IMPORT_NUMBER = PARENT_TABLE.IMPORT_NUMBER
)
WHERE
PARENT_TABLE.IMPORT_NUMBER IS NOT NULL;
EXECUTE IMMEDIATE 'ALTER TABLE TARGET_TABLE DROP COLUMN IMPORT NUMBER';
削除カラムではなく失敗している追加カラムは本当ですか? "NUMBER"データ型としてのドロップカラム。そこには存在してはいけません。 4つの値を選択していますが、1でグループ化するだけなので、INSERTのSELECT部分も失敗します。 – Craig
...またはその位置のNUMBERがデータ型ではありません。アンダースコアはありません。 DROP COLUMN IMPORT_NUMBERである必要があります。 – mathguy