DECLARE
/* Output variables to hold the result of the query: */
a T1.e%type;
b T1.f%type;
/* Cursor declaration: */
CURSOR T1Cursor IS SELECT e, f FROM T1 WHERE e < f FOR UPDATE;
BEGIN
OPEN T1Cursor;
LOOP
/* Retrieve each row of the result of the above query into PL/SQL variables: */
FETCH T1Cursor INTO a, b;
/* If there are no more rows to fetch, exit the loop: */
EXIT WHEN T1Cursor%NOTFOUND;
/* Delete the current tuple: */
DELETE FROM T1 WHERE CURRENT OF T1Cursor;
/* Insert the reverse tuple: */
INSERT INTO T1 VALUES( b, a );
END LOOP;
/* Free cursor used by the query. */
CLOSE T1Cursor;
END;
|