如果可能,我想優化以下PL/SQL語句到單個SELECT+UPDATE
SQL語句。將FOR..LOOP中的多個UPDATE轉換爲單個SELECT/UPDATE語句
--Key is a VARCHAR2, Value is a CLOB
FOR Pair IN (select Key, Value from PairTable)
LOOP
update UpdatableTable
set CLOBColumn = CLOBColumn || Pair.Value
where ID in
(select ID from UpdatableTable
where CONTAINS("indexedcolumns", '{' || Pair.Key || '}') > 0);
commit;
END LOOP;
的問題是,我需要小號SET
條款「一樣UPDATE
以s WHERE
條款」使用結果的一部分從UPDATE
。從概念上講,我想要SELECT
中的所有ID都在PairTable
。然後使用Key
字符串查看它是否包含在UpdatableTable
中。然後將Value
字符串(對應於上述Key
字符串)設置爲UpdatableTable
的CLOBColumn
。
除了獲得「SQL錯誤:ORA-00933:SQL命令未正確結束」之外,我不確定是否設置了正確的「值」。它應該和'WHERE'子句中的'Key'具有相同的ID。 – Howie
它可能與CONTAINS子句一起,檢查CONTAINS索引如何使用的語法。 – Dileep