0

SELECT+UPDATE可能であれば、次の PL/SQL ステートメントを単一の SQL ステートメントに最適化したいと考えています。

--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;

問題は、同じ's句でUPDATE's句の結果の一部を使用する必要があることです。概念的には、最初に. 次に、文字列を使用して、に含まれているかどうかを確認します。次に、文字列 (前述の文字列に対応する) を に設定します。WHEREUPDATESETSELECTPairTableKeyUpdatableTableValueKeyUpdatableTableCLOBColumn

4

2 に答える 2

1

少なくともFORALLPLSQL で a を使用します。

于 2013-01-23T13:29:06.827 に答える
0
you can use the below update statements

update UpdatableTable
  set CLOBColumn = CLOBColumn || Value from PairTable
  where ID in
    (select ID from UpdatableTable
    where CONTAINS("indexedcolumns", '{' || Pair.Key || '}') > 0); 

or

update UpdatableTable
  set CLOBColumn = CLOBColumn || b.Value from  (select Key, Value from PairTable) b
  where ID in
    (select ID from UpdatableTable
    where CONTAINS("indexedcolumns", '{' || Pair.Key || '}') > 0); 
于 2013-01-23T14:54:12.193 に答える