我正在嘗試向目標表中添加一個臨時列,並使用where子句中的該列通過存儲過程將新數據插入到父表中從父到目標表的一對一關係(見下面的代碼)。我收到了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」數據類型,不應該在那裏。 INSERT I的SELECT部分預計也會失敗,因爲您選擇了4個值,但僅分組爲1 – Craig
...或者,該位置的NUMBER不是數據類型。下劃線缺失;它應該是DROP COLUMN IMPORT_NUMBER。 – mathguy