Using FOR LOOP in CURSOR----no need to open and close.
-----------------------------------------------------------------------------------------
-
DECLARE
-
CURSOR DD IS SELECT * FROM EMP WHERE EMPNO=7788;
-
BEGIN
-
FOR D IN DD
-
LOOP
-
INSERT INTO EMP10(ID ,NAME)VALUES(D.EMPNO,D.ENAME);
-
END LOOP;
-
COMMIT;
-
END;
-
If possible try with duplicate records.
Using simple LOOP in a CURSOR
----------------------------------------------------
-
DECLARE
-
D EMP%ROWTYPE;
-
CURSOR CC IS SELECT * FROM EMP WHERE EMPNO=&NO;
-
BEGIN
-
OPEN CC;
-
LOOP
-
FETCH CC INTO D;
-
EXIT WHEN CC%NOTFOUND;
-
INSERT INTO EMP1(ID ,NAME) VALUES (D.EMPNO,D.ENAME);
-
END LOOP;
-
CLOSE CC;
-
COMMIT;
-
END;
-
the above code will copy the specified record from one table and insert to another table.
U can also commit here.
Using WHILE-LOOP in a CURSOR
-------------------------------------------------------
-
DECLARE
-
D EMP%ROWTYPE;
-
CURSOR CC IS SELECT * FROM EMP WHERE EMPNO=&NO;
-
BEGIN
-
OPEN CC;
-
WHILE CC%FOUND LOOP
-
FETCH CC INTO D;
-
INSERT INTO EMP1 VALUES(D.EMPNO,D.ENAME);
-
END LOOP;
-
CLOSE CC;
-
END;
-
Also check
PL/SQL-CURSOR - 3