0% found this document useful (0 votes)
22 views17 pages

PLSQL Day3

Uploaded by

Siddiqa Ayesha
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
22 views17 pages

PLSQL Day3

Uploaded by

Siddiqa Ayesha
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 17

SCOTT>>DECLARE

2 TYPE TAB1 IS TABLE OF DEPT%ROWTYPE


3 INDEX BY BINARY_INTEGER;
4 T TAB1;
5 BEGIN
6 FOR I IN 1..4
7 LOOP
8 SELECT * INTO T(I) FROM DEPTNO=DNO;
9 DNO:=DNO+10;
10 END LOOP;
11 FOR I IN 1..4
12 LOOP
13 DBMS_OUTPUT.PUT_LINE(T(I).DNAME);
14 END LOOP;
15 END;
16 /
SELECT * INTO T(I) FROM DEPTNO=DNO;
*
ERROR at line 8:
ORA-06550: line 8, column 35:
PL/SQL: ORA-00933: SQL command not properly ended
ORA-06550: line 8, column 5:
PL/SQL: SQL Statement ignored

SCOTT>>ED
Wrote file afiedt.buf

1 DECLARE
2 TYPE TAB1 IS TABLE OF DEPT
3 INDEX BY BINARY_INTEGER;
4 T TAB1;
5 BEGIN
6 FOR I IN 1..4
7 LOOP
8 SELECT * INTO T(I) FROM DEPTNO=DNO;
9 DNO:=DNO+10;
10 END LOOP;
11 FOR I IN 1..4
12 LOOP
13 DBMS_OUTPUT.PUT_LINE(T(I).DNAME);
14 END LOOP;
15* END;
SCOTT>>ED
Wrote file afiedt.buf

1 DECLARE
2 DNO NUMBER:=10;
3 TYPE TAB1 IS TABLE OF DEPT
4 INDEX BY BINARY_INTEGER;
5 T TAB1;
6 BEGIN
7 FOR I IN 1..4
8 LOOP
9 SELECT * INTO T(I) FROM DEPTNO=DNO;
10 DNO:=DNO+10;
11 END LOOP;
12 FOR I IN 1..4
13 LOOP
14 DBMS_OUTPUT.PUT_LINE(T(I).DNAME);
15 END LOOP;
16* END;
SCOTT>>/
SELECT * INTO T(I) FROM DEPTNO=DNO;
*
ERROR at line 9:
ORA-06550: line 9, column 35:
PL/SQL: ORA-00933: SQL command not properly ended
ORA-06550: line 9, column 5:
PL/SQL: SQL Statement ignored

SCOTT>>ED
Wrote file afiedt.buf

1 DECLARE
2 DNO NUMBER:=10;
3 TYPE TAB1 IS TABLE OF DEPT
4 INDEX BY BINARY_INTEGER;
5 T TAB1;
6 BEGIN
7 FOR I IN 1..4
8 LOOP
9 SELECT * INTO T(I) FROM DEPT WHERE DEPTNO=DNO;
10 DNO:=DNO+10;
11 END LOOP;
12 FOR I IN 1..4
13 LOOP
14 DBMS_OUTPUT.PUT_LINE(T(I).DNAME);
15 END LOOP;
16* END;
SCOTT>>/
TYPE TAB1 IS TABLE OF DEPT
*
ERROR at line 3:
ORA-06550: line 3, column 23:
PLS-00488: 'DEPT' must be a type
ORA-06550: line 3, column 1:
PL/SQL: Item ignored

SCOTT>>ED
Wrote file afiedt.buf

1 DECLARE
2 DNO NUMBER:=10;
3 TYPE TAB1 IS TABLE OF DEPT%ROWTYPE
4 INDEX BY BINARY_INTEGER;
5 T TAB1;
6 BEGIN
7 FOR I IN 1..4
8 LOOP
9 SELECT * INTO T(I) FROM DEPT WHERE DEPTNO=DNO;
10 DNO:=DNO+10;
11 END LOOP;
12 FOR I IN 1..4
13 LOOP
14 DBMS_OUTPUT.PUT_LINE(T(I).DNAME);
15 END LOOP;
16* END;
SCOTT>>/
ACCOUNTING
RESEARCH
SALES
OPERATIONS

PL/SQL procedure successfully completed.

SCOTT>>ED
Wrote file afiedt.buf

1 DECLARE
2 DNO NUMBER:=10;
3 TYPE TAB1 IS TABLE OF DEPT%ROWTYPE
4 INDEX BY BINARY_INTEGER;
5 T TAB1;
6 BEGIN
7 FOR I IN 1..4
8 LOOP
9 SELECT * INTO T(I) FROM DEPT WHERE DEPTNO=DNO;
10 DNO:=DNO+10;
11 END LOOP;
12 FOR I IN 1..4
13 LOOP
14 DBMS_OUTPUT.PUT_LINE(T(I).DNAME);
15 END LOOP;
16* END;
SCOTT>>/
ACCOUNTING
RESEARCH
SALES
OPERATIONS

PL/SQL procedure successfully completed.

SCOTT>>ED
Wrote file afiedt.buf

1 DECLARE
2 DNO NUMBER:=10;
3 TYPE TAB1 IS TABLE OF DEPT%ROWTYPE
4 INDEX BY BINARY_INTEGER;
5 T TAB1;
6 BEGIN
7 FOR I IN 1..4
8 LOOP
9 SELECT * INTO T(I) FROM DEPT WHERE DEPTNO=DNO;
10 DNO:=DNO+10;
11 END LOOP;
12 FOR I IN 1..4
13 LOOP
14 DBMS_OUTPUT.PUT_LINE(T(I).DNAME);
15 END LOOP;
16* END;
SCOTT>>/
ACCOUNTING
RESEARCH
SALES
OPERATIONS
PL/SQL procedure successfully completed.

SCOTT>>CL SCR

SCOTT>>BEGIN
2 .
SCOTT>>DESC NEW
Name Null? Type
----------------------------------------- -------- ---------------------
-------
EMPNO NOT NULL NUMBER(4)
ENAME VARCHAR2(10)
JOB VARCHAR2(9)
MGR NUMBER(4)
HIREDATE DATE
SAL NUMBER(7,2)
COMM NUMBER(7,2)
DEPTNO NUMBER(2)

SCOTT>>SELECT COUNT(*) FROM NEW;

COUNT(*)
----------
14

SCOTT>>CL SCR

SCOTT>>BEGIN
2 DELETE NEW WHERE JOB='CLERK'
3 END;
4 //
5 .
SCOTT>>ED
Wrote file afiedt.buf

1 BEGIN
2 DELETE NEW WHERE JOB='CLERK';
3* END;
4 /

PL/SQL procedure successfully completed.

SCOTT>>SELECT * FROM NEW WHERE JOB='CLERK';

no rows selected

SCOTT>>ROLLBACK;

Rollback complete.

SCOTT>>SELECT * FROM NEW WHERE JOB='CLERK';

EMPNO ENAME JOB MGR HIREDATE SAL


COMM
---------- ---------- --------- ---------- --------- ---------- ---------
-
DEPTNO
----------
7369 SMITH CLERK 7902 17-DEC-80 800
20
7876 ADAMS CLERK 7788 23-MAY-87 1100
20

7900 JAMES CLERK 7698 03-DEC-81 950


30

EMPNO ENAME JOB MGR HIREDATE SAL


COMM
---------- ---------- --------- ---------- --------- ---------- ---------
-
DEPTNO
----------
7934 MILLER CLERK 7782 23-JAN-82 1300
10

SCOTT>>CL SCR

SCOTT>>BEGIN
2 DELETE NEW WHERE JOB='CLERK';
3 DBMS_OUTPUT.PUT_LINE(SQL%ROWCOUNT);
4 END;
5 /
4

PL/SQL procedure successfully completed.

SCOTT>>/
0

PL/SQL procedure successfully completed.

SCOTT>>DECLARE
2 N NUMBER;
3 BEGIN
4 UPDATE EMP SET SAL=SAL+1000 WHERE JOB='MANAGER';
5 N:=SQL%ROWCOUNT;
6 DBMS_OUTPUT.PUT_LINE('NO OF ROWS'||N);
7 END;
8 /
NO OF ROWS3

PL/SQL procedure successfully completed.

SCOTT>>
SCOTT>>ED
Wrote file afiedt.buf

1 DECLARE
2 N NUMBER;
3 BEGIN
4 UPDATE EMP SET SAL=SAL+1000 WHERE DEPTNO=89;
5 N:=SQL%ROWCOUNT;
6 DBMS_OUTPUT.PUT_LINE('NO OF ROWS'||N);
7* END;
SCOTT>>/
NO OF ROWS0
PL/SQL procedure successfully completed.

SCOTT>>
SCOTT>>
SCOTT>>
SCOTT>>
SCOTT>>
SCOTT>>
SCOTT>>ED
Wrote file afiedt.buf

1 DECLARE
2 N NUMBER;
3 BEGIN
4 UPDATE EMP SET SAL=SAL+1000 WHERE DEPTNO=89;
5 N:=SQL%ROWCOUNT;
6 DBMS_OUTPUT.PUT_LINE('NO OF ROWS'||N);
7* END;
SCOTT>>CL SCR

SCOTT>>DECLARE
2 CURSOR EMP_CUR IS SELECT * FROM EMP WHERE DEPTNO=20;
3 OBJ EMP_CUR%ROWTYPE;
4 BEGIN
5 OPEN EMP_CUR;
6 FETCH EMP_CUR INTO OBJ;
7 DBMS_OUTPUT.PUT_LINE(OBJ.ENAME);
8 DBMS_OUTPUT.PUT_LINE(EMP_CUR%ROWCOUNT);
9 CLOSE EMP_CUR;
10 END;
11 /
SMITH
1

PL/SQL procedure successfully completed.

SCOTT>>ED
Wrote file afiedt.buf

1 DECLARE
2 CURSOR EMP_CUR IS SELECT * FROM EMP WHERE DEPTNO=20;
3 OBJ EMP_CUR%ROWTYPE;
4 BEGIN
5 OPEN EMP_CUR;
6 LOOP
7 FETCH EMP_CUR INTO OBJ;
8 DBMS_OUTPUT.PUT_LINE(OBJ.ENAME);
9 DBMS_OUTPUT.PUT_LINE(EMP_CUR%ROWCOUNT);
10 END LOOP;
11 CLOSE EMP_CUR;
12* END;
13 /
DECLARE
*
ERROR at line 1:
ORA-04030: out of process memory when trying to allocate 16396 bytes
(koh-kghu
sessi,pl/sql vc2)
SCOTT>>conn scott/tiger
Connected.
SCOTT>>DECLARE
2 CURSOR EMP_CUR IS SELECT * FROM EMP WHERE DEPTNO=20;
3 OBJ EMP_CUR%ROWTYPE;
4 BEGIN
5 OPEN EMP_CUR;
6 FETCH EMP_CUR INTO OBJ;
7 DBMS_OUTPUT.PUT_LINE(OBJ.ENAME);
8 DBMS_OUTPUT.PUT_LINE(EMP_CUR%ROWCOUNT);
9 CLOSE EMP_CUR;
10 END;
11 /

PL/SQL procedure successfully completed.

SCOTT>>set serveroutput on
SCOTT>>/
SMITH
1

PL/SQL procedure successfully completed.

SCOTT>>ed
Wrote file afiedt.buf

1 DECLARE
2 CURSOR EMP_CUR IS SELECT * FROM EMP WHERE DEPTNO=20;
3 OBJ EMP_CUR%ROWTYPE;
4 BEGIN
5 OPEN EMP_CUR;
6 LOOP
7 FETCH EMP_CUR INTO OBJ;
8 IF(EMP_CUR%FOUND) THEN
9 DBMS_OUTPUT.PUT_LINE(OBJ.ENAME);
10 DBMS_OUTPUT.PUT_LINE(EMP_CUR%ROWCOUNT);
11 ELSE
12 EXIT;
13 END LOOP;
14 CLOSE EMP_CUR;
15* END;
SCOTT>>/
END LOOP;
*
ERROR at line 13:
ORA-06550: line 13, column 5:
PLS-00103: Encountered the symbol "LOOP" when expecting one of the
following:
if
ORA-06550: line 15, column 4:
PLS-00103: Encountered the symbol "end-of-file" when expecting one of the
following:
end not pragma final instantiable order overriding static
member constructor map

SCOTT>>ED
Wrote file afiedt.buf

1 DECLARE
2 CURSOR EMP_CUR IS SELECT * FROM EMP WHERE DEPTNO=20;
3 OBJ EMP_CUR%ROWTYPE;
4 BEGIN
5 OPEN EMP_CUR;
6 LOOP
7 FETCH EMP_CUR INTO OBJ;
8 IF(EMP_CUR%FOUND) THEN
9 DBMS_OUTPUT.PUT_LINE(OBJ.ENAME);
10 DBMS_OUTPUT.PUT_LINE(EMP_CUR%ROWCOUNT);
11 ELSE
12 EXIT;
13 END IF;
14 END LOOP;
15 CLOSE EMP_CUR;
16* END;
SCOTT>>/
SMITH
1
JONES
2
SCOTT
3
ADAMS
4
FORD
5

PL/SQL procedure successfully completed.

SCOTT>>ED
Wrote file afiedt.buf

1 DECLARE
2 CURSOR EMP_CUR IS SELECT * FROM EMP WHERE DEPTNO=20;
3 OBJ EMP_CUR%ROWTYPE;
4 BEGIN
5 OPEN EMP_CUR;
6 IF(EMP_CUR%ISOPEN) THEN
7 DBMS_OUTPUT.PUT_LINE('ALREADY OPENED');
8 ELSE
9 OPEN EMP_CUR;
10 END IF;
11 LOOP
12 FETCH EMP_CUR INTO OBJ;
13 IF(EMP_CUR%FOUND) THEN
14 DBMS_OUTPUT.PUT_LINE(OBJ.ENAME);
15 DBMS_OUTPUT.PUT_LINE(EMP_CUR%ROWCOUNT);
16 ELSE
17 EXIT;
18 END IF;
19 END LOOP;
20 CLOSE EMP_CUR;
21* END;
SCOTT>>/
ALREADY OPENED
SMITH
1
JONES
2
SCOTT
3
ADAMS
4
FORD
5

PL/SQL procedure successfully completed.

SCOTT>>ED
Wrote file afiedt.buf

1 DECLARE
2 CURSOR EMP_CUR IS SELECT * FROM EMP WHERE DEPTNO=20;
3 OBJ EMP_CUR%ROWTYPE;
4 BEGIN
5 -- OPEN EMP_CUR;
6 IF(EMP_CUR%ISOPEN) THEN
7 DBMS_OUTPUT.PUT_LINE('ALREADY OPENED');
8 ELSE
9 OPEN EMP_CUR;
10 END IF;
11 LOOP
12 FETCH EMP_CUR INTO OBJ;
13 IF(EMP_CUR%FOUND) THEN
14 DBMS_OUTPUT.PUT_LINE(OBJ.ENAME);
15 DBMS_OUTPUT.PUT_LINE(EMP_CUR%ROWCOUNT);
16 ELSE
17 EXIT;
18 END IF;
19 END LOOP;
20 CLOSE EMP_CUR;
21* END;
SCOTT>>/
SMITH
1
JONES
2
SCOTT
3
ADAMS
4
FORD
5

PL/SQL procedure successfully completed.

SCOTT>>ED
Wrote file afiedt.buf

1 DECLARE
2 CURSOR EMP_CUR IS SELECT * FROM EMP WHERE DEPTNO=20;
3 BEGIN
4 FOR OBJ IN EMP_CUR
5 LOOP
6 DBMS_OUTPUT.PUT_LINE(OBJ.ENAME);
7 DBMS_OUTPUT.PUT_LINE(EMP_CUR%ROWCOUNT);
8 END LOOP;
9* END;
10 /
SMITH
1
JONES
2
SCOTT
3
ADAMS
4
FORD
5

PL/SQL procedure successfully completed.

SCOTT>>ED
Wrote file afiedt.buf

1 BEGIN
2 FOR OBJ IN (SELECT * FROM EMP WHERE DEPTNO=20)
3 LOOP
4 DBMS_OUTPUT.PUT_LINE(OBJ.ENAME);
5 END LOOP;
6* END;
SCOTT>>/
SMITH
JONES
SCOTT
ADAMS
FORD

PL/SQL procedure successfully completed.

SCOTT>>ED
Wrote file afiedt.buf

1 BEGIN
2 FOR OBJ IN (SELECT ENAME,DNAME FROM EMP,DEPT WHERE
EMP.DEPTNO=DEPT.DEPTNO)
3 LOOP
4 DBMS_OUTPUT.PUT_LINE(OBJ.ENAME);
5 DBMS_OUTPUT.PUT_LINE(OBJ.DNAME);
6 END LOOP;
7* END;
SCOTT>>/
CLARK
ACCOUNTING
KING
ACCOUNTING
MILLER
ACCOUNTING
JONES
RESEARCH
FORD
RESEARCH
ADAMS
RESEARCH
SMITH
RESEARCH
SCOTT
RESEARCH
WARD
SALES
TURNER
SALES
ALLEN
SALES
JAMES
SALES
BLAKE
SALES
MARTIN
SALES

PL/SQL procedure successfully completed.

SCOTT>>ED
Wrote file afiedt.buf

1 BEGIN
2 FOR OBJ IN (SELECT ENAME,DNAME FROM EMP,DEPT WHERE
EMP.DEPTNO=DEPT.DEPTNO)
3 LOOP
4 DBMS_OUTPUT.PUT_LINE(OBJ.ENAME||' '||OBJ.DNAME);
5 END LOOP;
6* END;
7 /
CLARK ACCOUNTING
KING ACCOUNTING
MILLER ACCOUNTING
JONES RESEARCH
FORD RESEARCH
ADAMS RESEARCH
SMITH RESEARCH
SCOTT RESEARCH
WARD SALES
TURNER SALES
ALLEN SALES
JAMES SALES
BLAKE SALES
MARTIN SALES

PL/SQL procedure successfully completed.

SCOTT>>ED
Wrote file afiedt.buf

1 BEGIN
2 FOR OBJ IN (SELECT ENAME,DNAME FROM EMP,DEPT WHERE
EMP.DEPTNO=DEPT.DEPTNO)
3 LOOP
4 DBMS_OUTPUT.PUT_LINE(OBJ.ENAME||' '||OBJ.DNAME);
5 END LOOP;
6* END;
SCOTT>>/
CLARK ACCOUNTING
KING ACCOUNTING
MILLER ACCOUNTING
JONES RESEARCH
FORD RESEARCH
ADAMS RESEARCH
SMITH RESEARCH
SCOTT RESEARCH
WARD SALES
TURNER SALES
ALLEN SALES
JAMES SALES
BLAKE SALES
MARTIN SALES

PL/SQL procedure successfully completed.

SCOTT>>ED
Wrote file afiedt.buf

1 BEGIN
2 FOR OBJ IN (SELECT ENAME,DNAME FROM EMP,DEPT WHERE
EMP.DEPTNO=DEPT.DEPTNO)
3 LOOP
4 DBMS_OUTPUT.PUT_LINE(OBJ.ENAME||' '||OBJ.DNAME);
5 END LOOP;
6* END;
SCOTT>>/
CLARK ACCOUNTING
KING ACCOUNTING
MILLER ACCOUNTING
JONES RESEARCH
FORD RESEARCH
ADAMS RESEARCH
SMITH RESEARCH
SCOTT RESEARCH
WARD SALES
TURNER SALES
ALLEN SALES
JAMES SALES
BLAKE SALES
MARTIN SALES

PL/SQL procedure successfully completed.

SCOTT>>ED
Wrote file afiedt.buf

1 BEGIN
2 FOR OBJ IN (SELECT ENAME,DNAME FROM EMP,DEPT
3 WHERE EMP.DEPTNO=DEPT.DEPTNO AND EMP.DEPTNO=20)
4 LOOP
5 DBMS_OUTPUT.PUT_LINE(OBJ.ENAME||' '||OBJ.DNAME);
6 END LOOP;
7* END;
SCOTT>>/
SMITH RESEARCH
JONES RESEARCH
SCOTT RESEARCH
ADAMS RESEARCH
FORD RESEARCH

PL/SQL procedure successfully completed.

SCOTT>>ED
Wrote file afiedt.buf

1 DECLARE
2 CURSOR CUR IS SELECT * FROM EMP WHERE DEPTNO=10;
3 BEGIN
4 FOR OBJ IN CUR
5 LOOP
6 UPDATE EMP SET SAL=SAL+1000 WHERE DEPTNO=10;
7 DBMS_OUTPUT.PUT_LINE(CUR%ROWCOUNT||SQL%ROWCOUNT);
8 END LOOP;
9* END;
SCOTT>>/
13
23
33

PL/SQL procedure successfully completed.

SCOTT>>SELECT SAL FROM EMP WHERE DEPTNO=10;

SAL
----------
5450
8000
4300

SCOTT>>ED
Wrote file afiedt.buf

1 DECLARE
2 CURSOR CUR IS SELECT * FROM EMP WHERE DEPTNO=10 FOR UPDATE;
3 BEGIN
4 FOR OBJ IN CUR
5 LOOP
6 UPDATE EMP SET SAL=SAL+1000 WHERE CURRENT OF CUR;
7 DBMS_OUTPUT.PUT_LINE(CUR%ROWCOUNT||' '||SQL%ROWCOUNT);
8 END LOOP;
9* END;
SCOTT>>/
1 1
2 1
3 1

PL/SQL procedure successfully completed.

SCOTT>>SELECT SAL FROM EMP WHERE DEPTNO=10;

SAL
----------
6450
9000
5300

SCOTT>>ED
Wrote file afiedt.buf

1* SELECT SAL FROM EMP WHERE DEPTNO=10


SCOTT>>ROLLBACK;

Rollback complete.

SCOTT>>UPDATE EMP SET SAL=SAL+1000 WHERE DEPTNO=30;


6 rows updated.

SCOTT>>SELECT EMPNO,ENAME FROM EMP;

EMPNO ENAME
---------- ----------
7369 SMITH
7499 ALLEN
7521 WARD
7566 JONES
7654 MARTIN
7698 BLAKE
7782 CLARK
7788 SCOTT
7839 KING
7844 TURNER
7876 ADAMS

EMPNO ENAME
---------- ----------
7900 JAMES
7902 FORD
7934 MILLER

14 rows selected.

SCOTT>> DECLARE
2 CURSOR CUR IS SELECT * FROM EMP WHERE DEPTNO=10 FOR UPDATE;
3 BEGIN
4 FOR OBJ IN CUR
5 LOOP
6 UPDATE EMP SET SAL=SAL+1000 WHERE CURRENT OF CUR;
7 DBMS_OUTPUT.PUT_LINE(CUR%ROWCOUNT||' '||SQL%ROWCOUNT);
8 END LOOP;
9 END;
10 .
SCOTT>>ED
Wrote file afiedt.buf

1 DECLARE
2 CURSOR CUR IS SELECT * FROM EMP FOR UPDATE;
3 I NUMBER:=1;
4 BEGIN
5 FOR OBJ IN CUR
6 LOOP
7 IF(I=1 OR I=4) THEN
8 DELETE EMP WHERE CURRENT OF CUR;
9 ELSE
10 UPDATE EMP SET SAL=SAL+1000 WHERE CURRENT OF CUR;
11 END IF;
12 I:=I+1;
13 END LOOP;
14* END;
SCOTT>>/

PL/SQL procedure successfully completed.

SCOTT>>ED
Wrote file afiedt.buf
1 DECLARE
2 CURSOR CUR IS SELECT * FROM EMP FOR UPDATE;
3 I NUMBER:=1;
4 BEGIN
5 FOR OBJ IN CUR
6 LOOP
7 IF(I=1 OR I=4) THEN
8 DELETE EMP WHERE CURRENT OF CUR;
9 ELSE
10 UPDATE EMP SET SAL=SAL+1000 WHERE CURRENT OF CUR;
11 END IF;
12 I:=I+1;
13 END LOOP;
14* END;
SCOTT>>SELECT EMPNO,ENAME,SAL FROM EMP;

EMPNO ENAME SAL


---------- ---------- ----------
7499 ALLEN 3600
7521 WARD 3250
7654 MARTIN 3250
7698 BLAKE 4850
7782 CLARK 3450
7788 SCOTT 4000
7839 KING 6000
7844 TURNER 3500
7876 ADAMS 2100
7900 JAMES 2950
7902 FORD 4000

EMPNO ENAME SAL


---------- ---------- ----------
7934 MILLER 2300

12 rows selected.

SCOTT>>ED 'C:\CURSOR'

SCOTT>>ED 'C:\CURSOR.SQL'

SCOTT>>CL SCR

SCOTT>>CREATE TABLE SEP(ID NUMBER);

Table created.

SCOTT>>BEGIN
2 .
SCOTT>>ED
Wrote file afiedt.buf

1 BEGIN
2 FOR I IN 1..10
3 LOOP
4 IF(I=3 OR I=7) THEN
5 ROLLBACK;
6 ELSE
7 INSERT INTO SEP VALUES(123);
8 END IF;
9* END;
10 /
END;
*
ERROR at line 9:
ORA-06550: line 9, column 4:
PLS-00103: Encountered the symbol ";" when expecting one of the
following:
loop

SCOTT>>ED
Wrote file afiedt.buf

1 BEGIN
2 FOR I IN 1..10
3 LOOP
4 IF(I=3 OR I=7) THEN
5 ROLLBACK;
6 ELSE
7 INSERT INTO SEP VALUES(123);
8 END IF;
9 END LOOP;
10* END;
SCOTT>>/

PL/SQL procedure successfully completed.

SCOTT>>SELECT * FROM SEP;

ID
----------
123
123
123

SCOTT>>SPOOL OFF

SCOTT>>SELECT SAL FROM EMP WHERE DEPTNO=10;

SAL
----------
3450
6000
2300

SCOTT>>DECLARE
2 CURSOR C IS SELECT * FROM EMP WHERE DEPTNO=10;
3 BEGIN
4 FOR S IN C
5 LOOP
6 UPDATE EMP SET SAL=SAL+1000 WHERE DEPTNO=10;
7 END LOOP;
8 END;
9 /

PL/SQL procedure successfully completed.

SCOTT>>SELECT SAL FROM EMP WHERE DEPTNO=10;


SAL
----------
6450
9000
5300

SCOTT>>ROLLBACK;

Rollback complete.

SCOTT>>DECLARE
2 CURSOR C IS SELECT * FROM EMP WHERE DEPTNO=10 FOR UPDATE;
3 BEGIN
4 FOR S IN C
5 LOOP
6 UPDATE EMP SET SAL=SAL+1000 WHERE CURRENT OF C;
7 END LOOP;
8 END;
9 /

PL/SQL procedure successfully completed.

SCOTT>>SELECT SAL FROM EMP WHERE DEPTNO=10;

SAL
----------
4450
7000
3300

SCOTT>>ROLLBACK;

Rollback complete.

SCOTT>>

You might also like