我有一個表,其中兩列具有名為 CLUSTER & COMMENT 的 oracle 保留關鍵字。我正在嘗試使用來自 spring JDBC 的合并命令,該命令引發以下錯誤。
ORA-01747: 無效的 user.table.column、table.column 或列規范
MERGE INTO TABLE DESTINATION
USING ( SELECT ? AS NAME, ? AS CLUSTER, ? AS COMMENT FROM DUAL) SOURCE
ON (SOURCE.NAME = DESTINATION.NAME)
WHEN MATCHED THEN
UPDATE SET DESTINATION.CLUSTER = SOURCE.CLUSTER, DESTINATION.COMMENT = SOURCE.COMMENT
WHEN NOT MATCHED THEN
INSERT (NAME, CLUSTER, COMMENT)
VALUES (SOURCE.NAME, SOURCE.CLUSTER,SOURCE.COMMENT)
有人可以幫助我如何在不更改列名的情況下解決這個問題嗎?
uj5u.com熱心網友回復:
如果您打算使用保留字作為識別符號,那么您需要使用帶引號的識別符號(以及資料庫中使用的確切大小寫):
MERGE INTO table_name DESTINATION
USING (
SELECT ? AS NAME,
? AS "CLUSTER",
? AS "COMMENT"
FROM DUAL
) SOURCE
ON (SOURCE.NAME = DESTINATION.NAME)
WHEN MATCHED THEN
UPDATE
SET DESTINATION."CLUSTER" = SOURCE."CLUSTER",
DESTINATION."COMMENT" = SOURCE."COMMENT"
WHEN NOT MATCHED THEN
INSERT (NAME, "CLUSTER", "COMMENT")
VALUES (SOURCE.NAME, SOURCE."CLUSTER",SOURCE."COMMENT");
但是,更好的解決方案是將識別符號更改為非保留字。
db<>在這里擺弄
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/415650.html
標籤:
上一篇:如何在Dao層的springmvc中撰寫長mysql查詢
下一篇:DoseWebApplicationContext和ServletApplicationContext是一回事嗎?
