<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://sqle.ru/index.php?action=history&amp;feed=atom&amp;title=Oracle_PL%2FSQL%2FCursor%2FExplicit_Cursor</id>
		<title>Oracle PL/SQL/Cursor/Explicit Cursor - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://sqle.ru/index.php?action=history&amp;feed=atom&amp;title=Oracle_PL%2FSQL%2FCursor%2FExplicit_Cursor"/>
		<link rel="alternate" type="text/html" href="http://sqle.ru/index.php?title=Oracle_PL/SQL/Cursor/Explicit_Cursor&amp;action=history"/>
		<updated>2026-05-25T13:53:38Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://sqle.ru/index.php?title=Oracle_PL/SQL/Cursor/Explicit_Cursor&amp;diff=1014&amp;oldid=prev</id>
		<title> в 13:45, 26 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://sqle.ru/index.php?title=Oracle_PL/SQL/Cursor/Explicit_Cursor&amp;diff=1014&amp;oldid=prev"/>
				<updated>2010-05-26T13:45:19Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 13:45, 26 мая 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
			</entry>

	<entry>
		<id>http://sqle.ru/index.php?title=Oracle_PL/SQL/Cursor/Explicit_Cursor&amp;diff=1015&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://sqle.ru/index.php?title=Oracle_PL/SQL/Cursor/Explicit_Cursor&amp;diff=1015&amp;oldid=prev"/>
				<updated>2010-05-26T09:54:45Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==An explicit cursor fetch loop.==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE TABLE lecturer (&lt;br /&gt;
  2    id               NUMBER(5) PRIMARY KEY,&lt;br /&gt;
  3    first_name       VARCHAR2(20),&lt;br /&gt;
  4    last_name        VARCHAR2(20),&lt;br /&gt;
  5    major            VARCHAR2(30),&lt;br /&gt;
  6    current_credits  NUMBER(3)&lt;br /&gt;
  7    );&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO lecturer (id, first_name, last_name, major,current_credits)&lt;br /&gt;
  2                VALUES (10001, &amp;quot;Scott&amp;quot;, &amp;quot;Lawson&amp;quot;,&amp;quot;Computer Science&amp;quot;, 11);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO lecturer (id, first_name, last_name, major, current_credits)&lt;br /&gt;
  2                VALUES (10002, &amp;quot;Mar&amp;quot;, &amp;quot;Wells&amp;quot;,&amp;quot;History&amp;quot;, 4);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO lecturer (id, first_name, last_name, major,current_credits)&lt;br /&gt;
  2                VALUES (10003, &amp;quot;Jone&amp;quot;, &amp;quot;Bliss&amp;quot;,&amp;quot;Computer Science&amp;quot;, 8);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO lecturer (id, first_name, last_name, major,current_credits)&lt;br /&gt;
  2                VALUES (10004, &amp;quot;Man&amp;quot;, &amp;quot;Kyte&amp;quot;,&amp;quot;Economics&amp;quot;, 8);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO lecturer (id, first_name, last_name, major,current_credits)&lt;br /&gt;
  2                VALUES (10005, &amp;quot;Pat&amp;quot;, &amp;quot;Poll&amp;quot;,&amp;quot;History&amp;quot;, 4);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO lecturer (id, first_name, last_name, major,current_credits)&lt;br /&gt;
  2                VALUES (10006, &amp;quot;Tim&amp;quot;, &amp;quot;Viper&amp;quot;,&amp;quot;History&amp;quot;, 4);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO lecturer (id, first_name, last_name, major,current_credits)&lt;br /&gt;
  2                VALUES (10007, &amp;quot;Barbara&amp;quot;, &amp;quot;Blues&amp;quot;,&amp;quot;Economics&amp;quot;, 7);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO lecturer (id, first_name, last_name, major,current_credits)&lt;br /&gt;
  2                VALUES (10008, &amp;quot;David&amp;quot;, &amp;quot;Large&amp;quot;,&amp;quot;Music&amp;quot;, 4);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO lecturer (id, first_name, last_name, major,current_credits)&lt;br /&gt;
  2                VALUES (10009, &amp;quot;Chris&amp;quot;, &amp;quot;Elegant&amp;quot;,&amp;quot;Nutrition&amp;quot;, 8);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO lecturer (id, first_name, last_name, major,current_credits)&lt;br /&gt;
  2                VALUES (10010, &amp;quot;Rose&amp;quot;, &amp;quot;Bond&amp;quot;,&amp;quot;Music&amp;quot;, 7);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO lecturer (id, first_name, last_name, major,current_credits)&lt;br /&gt;
  2                VALUES (10011, &amp;quot;Rita&amp;quot;, &amp;quot;Johnson&amp;quot;,&amp;quot;Nutrition&amp;quot;, 8);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO lecturer (id, first_name, last_name, major,current_credits)&lt;br /&gt;
  2                VALUES (10012, &amp;quot;Sharon&amp;quot;, &amp;quot;Clear&amp;quot;,&amp;quot;Computer Science&amp;quot;, 3);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; DECLARE&lt;br /&gt;
  2    myLecturerID    lecturer.id%TYPE;&lt;br /&gt;
  3    firstName    lecturer.first_name%TYPE;&lt;br /&gt;
  4    v_LastName     lecturer.last_name%TYPE;&lt;br /&gt;
  5&lt;br /&gt;
  6    v_Major        lecturer.major%TYPE := &amp;quot;Computer Science&amp;quot;;&lt;br /&gt;
  7&lt;br /&gt;
  8    CURSOR cursorValue IS&lt;br /&gt;
  9      SELECT id, first_name, last_name&lt;br /&gt;
 10        FROM lecturer&lt;br /&gt;
 11        WHERE major = v_Major;&lt;br /&gt;
 12  BEGIN&lt;br /&gt;
 13    OPEN cursorValue;&lt;br /&gt;
 14    LOOP&lt;br /&gt;
 15      FETCH cursorValue INTO myLecturerID, firstName, v_LastName;&lt;br /&gt;
 16&lt;br /&gt;
 17      EXIT WHEN cursorValue%NOTFOUND;&lt;br /&gt;
 18    END LOOP;&lt;br /&gt;
 19    CLOSE cursorValue;&lt;br /&gt;
 20  END;&lt;br /&gt;
 21  /&lt;br /&gt;
PL/SQL procedure successfully completed.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table lecturer;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==an explicit cursor that selects data==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE TABLE employees&lt;br /&gt;
  2  ( employee_id          number(10)      not null,&lt;br /&gt;
  3    last_name            varchar2(50)      not null,&lt;br /&gt;
  4    email                varchar2(30),&lt;br /&gt;
  5    hire_date            date,&lt;br /&gt;
  6    job_id               varchar2(30),&lt;br /&gt;
  7    department_id        number(10),&lt;br /&gt;
  8    salary               number(6),&lt;br /&gt;
  9    manager_id           number(6)&lt;br /&gt;
 10  );&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; insert into employees( employee_id, last_name, email, hire_date, job_id, salary,department_id ,manager_id)&lt;br /&gt;
  2                values ( 1001, &amp;quot;Lawson&amp;quot;, &amp;quot;lawson@g.ru&amp;quot;, &amp;quot;01-JAN-2002&amp;quot;,&amp;quot;MGR&amp;quot;, 30000,1 ,1004);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; insert into employees( employee_id, last_name, email, hire_date, job_id, salary, department_id ,manager_id)&lt;br /&gt;
  2                values ( 1002, &amp;quot;Wells&amp;quot;, &amp;quot;wells@g.ru&amp;quot;, &amp;quot;01-JAN-2002&amp;quot;, &amp;quot;DBA&amp;quot;, 20000,2, 1005 );&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; insert into employees( employee_id, last_name, email, hire_date, job_id, salary, department_id ,manager_id)&lt;br /&gt;
  2                 values( 1003, &amp;quot;Bliss&amp;quot;, &amp;quot;bliss@g.ru&amp;quot;, &amp;quot;01-JAN-2002&amp;quot;, &amp;quot;PROG&amp;quot;, 24000,3 ,1004);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; insert into employees( employee_id, last_name, email, hire_date, job_id, salary, department_id, manager_id)&lt;br /&gt;
  2                 values( 1004,  &amp;quot;Kyte&amp;quot;, &amp;quot;tkyte@a.ru&amp;quot;, SYSDATE-3650, &amp;quot;MGR&amp;quot;,25000 ,4, 1005);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; insert into employees( employee_id, last_name, email, hire_date, job_id, salary, department_id, manager_id)&lt;br /&gt;
  2                 values( 1005, &amp;quot;Viper&amp;quot;, &amp;quot;sdillon@a .ru&amp;quot;, SYSDATE, &amp;quot;PROG&amp;quot;, 20000, 1, 1006);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; insert into employees( employee_id, last_name, email, hire_date, job_id, salary, department_id,manager_id)&lt;br /&gt;
  2                 values( 1006, &amp;quot;Beck&amp;quot;, &amp;quot;clbeck@g.ru&amp;quot;, SYSDATE, &amp;quot;PROG&amp;quot;, 20000, 2, null);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; insert into employees( employee_id, last_name, email, hire_date, job_id, salary, department_id, manager_id)&lt;br /&gt;
  2                 values( 1007, &amp;quot;Java&amp;quot;, &amp;quot;java01@g.ru&amp;quot;, SYSDATE, &amp;quot;PROG&amp;quot;, 20000, 3, 1006);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; insert into employees( employee_id, last_name, email, hire_date, job_id, salary, department_id, manager_id)&lt;br /&gt;
  2                 values( 1008, &amp;quot;Oracle&amp;quot;, &amp;quot;oracle1@g.ru&amp;quot;, SYSDATE, &amp;quot;DBA&amp;quot;, 20000, 4, 1006);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; declare&lt;br /&gt;
  2    cursor emps&lt;br /&gt;
  3    is select *&lt;br /&gt;
  4         from employees&lt;br /&gt;
  5        where rownum &amp;lt; 6&lt;br /&gt;
  6        order by 1;&lt;br /&gt;
  7&lt;br /&gt;
  8    emp employees%rowtype;&lt;br /&gt;
  9    row number := 1;&lt;br /&gt;
 10  begin&lt;br /&gt;
 11    open emps;&lt;br /&gt;
 12    fetch emps into emp;&lt;br /&gt;
 13&lt;br /&gt;
 14    loop&lt;br /&gt;
 15      if emps%FOUND then&lt;br /&gt;
 16        dbms_output.put_line(&amp;quot;Looping over record &amp;quot; ||row|| &amp;quot; of &amp;quot; ||&lt;br /&gt;
 17                             emps%ROWCOUNT);&lt;br /&gt;
 18        fetch emps into emp;&lt;br /&gt;
 19        row := row + 1;&lt;br /&gt;
 20      elsif emps%NOTFOUND then&lt;br /&gt;
 21        exit; -- EXIT statement exits the LOOP, not the IF stmt&lt;br /&gt;
 22      end if;&lt;br /&gt;
 23    end loop;&lt;br /&gt;
 24&lt;br /&gt;
 25    if emps%ISOPEN then&lt;br /&gt;
 26      close emps;&lt;br /&gt;
 27    end if;&lt;br /&gt;
 28  end;&lt;br /&gt;
 29  /&lt;br /&gt;
Looping over record 1 of 1&lt;br /&gt;
Looping over record 2 of 2&lt;br /&gt;
Looping over record 3 of 3&lt;br /&gt;
Looping over record 4 of 4&lt;br /&gt;
Looping over record 5 of 5&lt;br /&gt;
PL/SQL procedure successfully completed.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table employees;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; --&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Column value indexed cursor==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE TABLE EMP(&lt;br /&gt;
  2      EMPNO NUMBER(4) NOT NULL,&lt;br /&gt;
  3      ENAME VARCHAR2(10),&lt;br /&gt;
  4      JOB VARCHAR2(9),&lt;br /&gt;
  5      MGR NUMBER(4),&lt;br /&gt;
  6      HIREDATE DATE,&lt;br /&gt;
  7      SAL NUMBER(7, 2),&lt;br /&gt;
  8      COMM NUMBER(7, 2),&lt;br /&gt;
  9      DEPTNO NUMBER(2)&lt;br /&gt;
 10  );&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES(7369, &amp;quot;SMITH&amp;quot;, &amp;quot;CLERK&amp;quot;, 7902,TO_DATE(&amp;quot;17-DEC-1980&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 800, NULL, 20);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES(7499, &amp;quot;ALLEN&amp;quot;, &amp;quot;SALESMAN&amp;quot;, 7698,TO_DATE(&amp;quot;20-FEB-1981&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 1600, 300, 30);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES(7521, &amp;quot;WARD&amp;quot;, &amp;quot;SALESMAN&amp;quot;, 7698,TO_DATE(&amp;quot;22-FEB-1981&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 1250, 500, 30);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES(7566, &amp;quot;JONES&amp;quot;, &amp;quot;MANAGER&amp;quot;, 7839,TO_DATE(&amp;quot;2-APR-1981&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 2975, NULL, 20);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES(7654, &amp;quot;MARTIN&amp;quot;, &amp;quot;SALESMAN&amp;quot;, 7698,TO_DATE(&amp;quot;28-SEP-1981&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 1250, 1400, 30);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES(7698, &amp;quot;BLAKE&amp;quot;, &amp;quot;MANAGER&amp;quot;, 7839,TO_DATE(&amp;quot;1-MAY-1981&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 2850, NULL, 30);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES(7782, &amp;quot;CLARK&amp;quot;, &amp;quot;MANAGER&amp;quot;, 7839,TO_DATE(&amp;quot;9-JUN-1981&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 2450, NULL, 10);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES(7788, &amp;quot;SCOTT&amp;quot;, &amp;quot;ANALYST&amp;quot;, 7566,TO_DATE(&amp;quot;09-DEC-1982&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 3000, NULL, 20);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES(7839, &amp;quot;KING&amp;quot;, &amp;quot;PRESIDENT&amp;quot;, NULL,TO_DATE(&amp;quot;17-NOV-1981&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 5000, NULL, 10);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES(7844, &amp;quot;TURNER&amp;quot;, &amp;quot;SALESMAN&amp;quot;, 7698,TO_DATE(&amp;quot;8-SEP-1981&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 1500, 0, 30);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES(7876, &amp;quot;ADAMS&amp;quot;, &amp;quot;CLERK&amp;quot;, 7788,TO_DATE(&amp;quot;12-JAN-1983&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 1100, NULL, 20);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES(7900, &amp;quot;JAMES&amp;quot;, &amp;quot;CLERK&amp;quot;, 7698,TO_DATE(&amp;quot;3-DEC-1981&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 950, NULL, 30);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES(7902, &amp;quot;FORD&amp;quot;, &amp;quot;ANALYST&amp;quot;, 7566,TO_DATE(&amp;quot;3-DEC-1981&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 3000, NULL, 20);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES(7934, &amp;quot;MILLER&amp;quot;, &amp;quot;CLERK&amp;quot;, 7782,TO_DATE(&amp;quot;23-JAN-1982&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 1300, NULL, 10);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE TABLE DEPT(&lt;br /&gt;
  2      DEPTNO NUMBER(2),&lt;br /&gt;
  3      DNAME VARCHAR2(14),&lt;br /&gt;
  4      LOC VARCHAR2(13)&lt;br /&gt;
  5  );&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO DEPT VALUES (10, &amp;quot;ACCOUNTING&amp;quot;, &amp;quot;NEW YORK&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO DEPT VALUES (20, &amp;quot;RESEARCH&amp;quot;, &amp;quot;DALLAS&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO DEPT VALUES (30, &amp;quot;SALES&amp;quot;, &amp;quot;CHICAGO&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO DEPT VALUES (40, &amp;quot;OPERATIONS&amp;quot;, &amp;quot;BOSTON&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; declare&lt;br /&gt;
  2      l_dname  dept.dname%type;&lt;br /&gt;
  3      l_deptno dept.deptno%type;&lt;br /&gt;
  4      l_ename  emp.ename%type;&lt;br /&gt;
  5      cursor c1 is&lt;br /&gt;
  6      select deptno, dname from dept order by deptno;&lt;br /&gt;
  7      cursor c2( p_deptno in number )&lt;br /&gt;
  8      is&lt;br /&gt;
  9      select ename&lt;br /&gt;
 10        from emp&lt;br /&gt;
 11       where deptno = p_deptno and sal = (select max(sal) from emp where deptno = p_deptno);&lt;br /&gt;
 12  begin&lt;br /&gt;
 13      open c1;&lt;br /&gt;
 14      loop&lt;br /&gt;
 15          fetch c1 into l_deptno, l_dname;&lt;br /&gt;
 16          exit when c1%notfound;&lt;br /&gt;
 17          open c2(l_deptno);&lt;br /&gt;
 18          fetch c2 into l_ename;&lt;br /&gt;
 19          close c2;&lt;br /&gt;
 20          dbms_output.put_line&lt;br /&gt;
 21          ( l_deptno || &amp;quot;, &amp;quot; || l_dname || &amp;quot;, &amp;quot; || l_ename );&lt;br /&gt;
 22      end loop;&lt;br /&gt;
 23      close c1;&lt;br /&gt;
 24  end;&lt;br /&gt;
 25  /&lt;br /&gt;
PL/SQL procedure successfully completed.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table emp;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt; drop table dept;&lt;br /&gt;
Table dropped.&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Combine for loop and if statement to check the value in cursor==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
SQL&amp;gt; CREATE TABLE products(&lt;br /&gt;
  2    name            VARCHAR2(50),&lt;br /&gt;
  3    price         NUMBER(8,2),&lt;br /&gt;
  4    min_price          NUMBER(8,2)&lt;br /&gt;
  5  );&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; create or replace procedure print_products as&lt;br /&gt;
  2      cursor dataCursor is select name, price from products;&lt;br /&gt;
  3    begin&lt;br /&gt;
  4       for i in dataCursor LOOP&lt;br /&gt;
  5           if i.price &amp;gt; 50 then&lt;br /&gt;
  6              dbms_output.put_line(i.name ||&amp;quot; Price: &amp;quot;|| i.price);&lt;br /&gt;
  7           else&lt;br /&gt;
  8              dbms_output.put_line(i.name || &amp;quot; Product under 50&amp;quot;);&lt;br /&gt;
  9           end if;&lt;br /&gt;
 10       END LOOP;&lt;br /&gt;
 11   end;&lt;br /&gt;
 12  /&lt;br /&gt;
Procedure created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; execute print_products&lt;br /&gt;
PL/SQL procedure successfully completed.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table products;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Cursor performance==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; create table myTable as select * from all_objects;&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; exec dbms_stats.gather_table_stats( user, &amp;quot;myTable&amp;quot; );&lt;br /&gt;
PL/SQL procedure successfully completed.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; create table myTable2 as select * from myTable;&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; exec dbms_stats.gather_table_stats( user, &amp;quot;myTable2&amp;quot; );&lt;br /&gt;
PL/SQL procedure successfully completed.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; set timing on&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; update myTable set object_name = lower(object_name);&lt;br /&gt;
12599 rows updated.&lt;br /&gt;
Elapsed: 00:00:00.60&lt;br /&gt;
SQL&amp;gt; declare&lt;br /&gt;
  2      type ridArray is table of rowid;&lt;br /&gt;
  3      type vcArray is table of myTable2.object_name%type;&lt;br /&gt;
  4&lt;br /&gt;
  5      l_rids  ridArray;&lt;br /&gt;
  6      l_names vcArray;&lt;br /&gt;
  7&lt;br /&gt;
  8      cursor c is select rowid, object_name from myTable2;&lt;br /&gt;
  9  begin&lt;br /&gt;
 10      open c;&lt;br /&gt;
 11      loop&lt;br /&gt;
 12          fetch c bulk collect into l_rids, l_names LIMIT 100;&lt;br /&gt;
 13          forall i in 1 .. l_rids.count&lt;br /&gt;
 14              update myTable2 set object_name = lower(l_names(i)) where rowid = l_rids(i);&lt;br /&gt;
 15          commit;&lt;br /&gt;
 16          exit when c%notfound;&lt;br /&gt;
 17      end loop;&lt;br /&gt;
 18      close c;&lt;br /&gt;
 19  end;&lt;br /&gt;
 20  /&lt;br /&gt;
PL/SQL procedure successfully completed.&lt;br /&gt;
Elapsed: 00:00:01.05&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; set timing off&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table myTable;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt; drop table myTable2;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Delete from table where current of cursor==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE TABLE myTable(&lt;br /&gt;
  2      e INTEGER,&lt;br /&gt;
  3      f INTEGER&lt;br /&gt;
  4  );&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; DELETE FROM myTable;&lt;br /&gt;
0 rows deleted.&lt;br /&gt;
SQL&amp;gt; INSERT INTO myTable VALUES(1, 3);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO myTable VALUES(2, 4);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; DECLARE&lt;br /&gt;
  2        a myTable.e%TYPE;&lt;br /&gt;
  3        b myTable.f%TYPE;&lt;br /&gt;
  4        CURSOR myTableCursor IS&lt;br /&gt;
  5            SELECT e, f&lt;br /&gt;
  6            FROM myTable&lt;br /&gt;
  7            WHERE e &amp;lt; f&lt;br /&gt;
  8            FOR UPDATE;&lt;br /&gt;
  9    BEGIN&lt;br /&gt;
 10       OPEN myTableCursor;&lt;br /&gt;
 11       LOOP&lt;br /&gt;
 12           FETCH myTableCursor INTO a, b;&lt;br /&gt;
 13           EXIT WHEN myTableCursor%NOTFOUND;&lt;br /&gt;
 14           DELETE FROM myTable WHERE CURRENT OF myTableCursor;&lt;br /&gt;
 15           INSERT INTO myTable VALUES(b, a);&lt;br /&gt;
 16       END LOOP;&lt;br /&gt;
 17&lt;br /&gt;
 18       CLOSE myTableCursor;&lt;br /&gt;
 19&lt;br /&gt;
 20   END;&lt;br /&gt;
 21&lt;br /&gt;
 22  /&lt;br /&gt;
PL/SQL procedure successfully completed.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table myTable;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Explicit Cursor Demo==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; -- create demo table&lt;br /&gt;
SQL&amp;gt; create table Employee(&lt;br /&gt;
  2    ID                 VARCHAR2(4 BYTE)         NOT NULL,&lt;br /&gt;
  3    First_Name         VARCHAR2(10 BYTE),&lt;br /&gt;
  4    Last_Name          VARCHAR2(10 BYTE),&lt;br /&gt;
  5    Start_Date         DATE,&lt;br /&gt;
  6    End_Date           DATE,&lt;br /&gt;
  7    Salary             Number(8,2),&lt;br /&gt;
  8    City               VARCHAR2(10 BYTE),&lt;br /&gt;
  9    Description        VARCHAR2(15 BYTE)&lt;br /&gt;
 10  )&lt;br /&gt;
 11  /&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; -- prepare data&lt;br /&gt;
SQL&amp;gt; insert into Employee(ID,  First_Name, Last_Name, Start_Date,                     End_Date,                       Salary,  City,       Description)&lt;br /&gt;
  2               values (&amp;quot;01&amp;quot;,&amp;quot;Jason&amp;quot;,    &amp;quot;Martin&amp;quot;,  to_date(&amp;quot;19960725&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), to_date(&amp;quot;20060725&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), 1234.56, &amp;quot;Toronto&amp;quot;,  &amp;quot;Programmer&amp;quot;)&lt;br /&gt;
  3  /&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into Employee(ID,  First_Name, Last_Name, Start_Date,                     End_Date,                       Salary,  City,       Description)&lt;br /&gt;
  2                values(&amp;quot;02&amp;quot;,&amp;quot;Alison&amp;quot;,   &amp;quot;Mathews&amp;quot;, to_date(&amp;quot;19760321&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), to_date(&amp;quot;19860221&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), 6661.78, &amp;quot;Vancouver&amp;quot;,&amp;quot;Tester&amp;quot;)&lt;br /&gt;
  3  /&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into Employee(ID,  First_Name, Last_Name, Start_Date,                     End_Date,                       Salary,  City,       Description)&lt;br /&gt;
  2                values(&amp;quot;03&amp;quot;,&amp;quot;James&amp;quot;,    &amp;quot;Smith&amp;quot;,   to_date(&amp;quot;19781212&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), to_date(&amp;quot;19900315&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), 6544.78, &amp;quot;Vancouver&amp;quot;,&amp;quot;Tester&amp;quot;)&lt;br /&gt;
  3  /&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into Employee(ID,  First_Name, Last_Name, Start_Date,                     End_Date,                       Salary,  City,       Description)&lt;br /&gt;
  2                values(&amp;quot;04&amp;quot;,&amp;quot;Celia&amp;quot;,    &amp;quot;Rice&amp;quot;,    to_date(&amp;quot;19821024&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), to_date(&amp;quot;19990421&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), 2344.78, &amp;quot;Vancouver&amp;quot;,&amp;quot;Manager&amp;quot;)&lt;br /&gt;
  3  /&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into Employee(ID,  First_Name, Last_Name, Start_Date,                     End_Date,                       Salary,  City,       Description)&lt;br /&gt;
  2                values(&amp;quot;05&amp;quot;,&amp;quot;Robert&amp;quot;,   &amp;quot;Black&amp;quot;,   to_date(&amp;quot;19840115&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), to_date(&amp;quot;19980808&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), 2334.78, &amp;quot;Vancouver&amp;quot;,&amp;quot;Tester&amp;quot;)&lt;br /&gt;
  3  /&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into Employee(ID,  First_Name, Last_Name, Start_Date,                     End_Date,                       Salary, City,        Description)&lt;br /&gt;
  2                values(&amp;quot;06&amp;quot;,&amp;quot;Linda&amp;quot;,    &amp;quot;Green&amp;quot;,   to_date(&amp;quot;19870730&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), to_date(&amp;quot;19960104&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), 4322.78,&amp;quot;New York&amp;quot;,  &amp;quot;Tester&amp;quot;)&lt;br /&gt;
  3  /&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into Employee(ID,  First_Name, Last_Name, Start_Date,                     End_Date,                       Salary, City,        Description)&lt;br /&gt;
  2                values(&amp;quot;07&amp;quot;,&amp;quot;David&amp;quot;,    &amp;quot;Larry&amp;quot;,   to_date(&amp;quot;19901231&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), to_date(&amp;quot;19980212&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), 7897.78,&amp;quot;New York&amp;quot;,  &amp;quot;Manager&amp;quot;)&lt;br /&gt;
  3  /&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into Employee(ID,  First_Name, Last_Name, Start_Date,                     End_Date,                       Salary, City,        Description)&lt;br /&gt;
  2                values(&amp;quot;08&amp;quot;,&amp;quot;James&amp;quot;,    &amp;quot;Cat&amp;quot;,     to_date(&amp;quot;19960917&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), to_date(&amp;quot;20020415&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), 1232.78,&amp;quot;Vancouver&amp;quot;, &amp;quot;Tester&amp;quot;)&lt;br /&gt;
  3  /&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; -- display data in the table&lt;br /&gt;
SQL&amp;gt; select * from Employee&lt;br /&gt;
  2  /&lt;br /&gt;
ID   FIRST_NAME LAST_NAME  START_DAT END_DATE      SALARY CITY       DESCRIPTION&lt;br /&gt;
---- ---------- ---------- --------- --------- ---------- ---------- ---------------&lt;br /&gt;
01   Jason      Martin     25-JUL-96 25-JUL-06    1234.56 Toronto    Programmer&lt;br /&gt;
02   Alison     Mathews    21-MAR-76 21-FEB-86    6661.78 Vancouver  Tester&lt;br /&gt;
03   James      Smith      12-DEC-78 15-MAR-90    6544.78 Vancouver  Tester&lt;br /&gt;
04   Celia      Rice       24-OCT-82 21-APR-99    2344.78 Vancouver  Manager&lt;br /&gt;
05   Robert     Black      15-JAN-84 08-AUG-98    2334.78 Vancouver  Tester&lt;br /&gt;
06   Linda      Green      30-JUL-87 04-JAN-96    4322.78 New York   Tester&lt;br /&gt;
07   David      Larry      31-DEC-90 12-FEB-98    7897.78 New York   Manager&lt;br /&gt;
08   James      Cat        17-SEP-96 15-APR-02    1232.78 Vancouver  Tester&lt;br /&gt;
8 rows selected.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; -- explicit cursor&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;  set serverout on&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;  declare&lt;br /&gt;
  2      cursor myCursor (pid in number) is select * from employee where id = pid;&lt;br /&gt;
  3&lt;br /&gt;
  4      myEmployee employee%rowtype;&lt;br /&gt;
  5    begin&lt;br /&gt;
  6      dbms_output.put_line(&amp;quot;Getting employees ID= 03&amp;quot;);&lt;br /&gt;
  7      open myCursor(03);&lt;br /&gt;
  8      loop&lt;br /&gt;
  9        fetch myCursor into myEmployee;&lt;br /&gt;
 10        exit when myCursor%notfound;&lt;br /&gt;
 11        dbms_output.put(&amp;quot;Employee id &amp;quot; || myEmployee.id || &amp;quot; is &amp;quot;);&lt;br /&gt;
 12        dbms_output.put_line(myEmployee.first_name || &amp;quot; &amp;quot; || myEmployee.last_name);&lt;br /&gt;
 13      end loop;&lt;br /&gt;
 14      close myCursor;&lt;br /&gt;
 15&lt;br /&gt;
 16      dbms_output.put_line(&amp;quot;Getting employees ID= 01&amp;quot;);&lt;br /&gt;
 17      open myCursor(01);&lt;br /&gt;
 18      loop&lt;br /&gt;
 19        fetch myCursor into myEmployee;&lt;br /&gt;
 20        exit when myCursor%notfound;&lt;br /&gt;
 21        dbms_output.put(&amp;quot;Employee id &amp;quot; || myEmployee.id || &amp;quot; is &amp;quot;);&lt;br /&gt;
 22        dbms_output.put_line(myEmployee.first_name || &amp;quot; &amp;quot; || myEmployee.last_name);&lt;br /&gt;
 23      end loop;&lt;br /&gt;
 24      close myCursor;&lt;br /&gt;
 25    end;&lt;br /&gt;
 26    /&lt;br /&gt;
Getting employees ID= 03&lt;br /&gt;
Employee id 03 is James Smith&lt;br /&gt;
Getting employees ID= 01&lt;br /&gt;
Employee id 01 is Jason Martin&lt;br /&gt;
PL/SQL procedure successfully completed.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; -- clean the table&lt;br /&gt;
SQL&amp;gt; drop table Employee&lt;br /&gt;
  2  /&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
           &lt;br /&gt;
         &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==If statement and single piece value in cursor==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
SQL&amp;gt; CREATE TABLE products(&lt;br /&gt;
  2    name            VARCHAR2(50),&lt;br /&gt;
  3    price      NUMBER(8,2)&lt;br /&gt;
  4  );&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; declare&lt;br /&gt;
  2      cursor get_data is select name, price from products;&lt;br /&gt;
  3  begin&lt;br /&gt;
  4       for i in get_data&lt;br /&gt;
  5       LOOP&lt;br /&gt;
  6          if i.price &amp;gt; 50 then&lt;br /&gt;
  7               dbms_output.put_line(i.name || &amp;quot; Price: &amp;quot; || i.price);&lt;br /&gt;
  8          end if;&lt;br /&gt;
  9       END LOOP;&lt;br /&gt;
 10  end;&lt;br /&gt;
 11  /&lt;br /&gt;
PL/SQL procedure successfully completed.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table products;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Implicit and Explicit Cursors==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE TABLE employees&lt;br /&gt;
  2  ( employee_id          number(10)      not null,&lt;br /&gt;
  3    last_name            varchar2(50)      not null,&lt;br /&gt;
  4    email                varchar2(30),&lt;br /&gt;
  5    hire_date            date,&lt;br /&gt;
  6    job_id               varchar2(30),&lt;br /&gt;
  7    department_id        number(10),&lt;br /&gt;
  8    salary               number(6),&lt;br /&gt;
  9    manager_id           number(6)&lt;br /&gt;
 10  );&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; insert into employees( employee_id, last_name, email, hire_date, job_id, salary,department_id ,manager_id)&lt;br /&gt;
  2                values ( 1001, &amp;quot;Lawson&amp;quot;, &amp;quot;lawson@g.ru&amp;quot;, &amp;quot;01-JAN-2002&amp;quot;,&amp;quot;MGR&amp;quot;, 30000,1 ,1004);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; insert into employees( employee_id, last_name, email, hire_date, job_id, salary, department_id ,manager_id)&lt;br /&gt;
  2                values ( 1002, &amp;quot;Wells&amp;quot;, &amp;quot;wells@g.ru&amp;quot;, &amp;quot;01-JAN-2002&amp;quot;, &amp;quot;DBA&amp;quot;, 20000,2, 1005 );&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; insert into employees( employee_id, last_name, email, hire_date, job_id, salary, department_id ,manager_id)&lt;br /&gt;
  2                 values( 1003, &amp;quot;Bliss&amp;quot;, &amp;quot;bliss@g.ru&amp;quot;, &amp;quot;01-JAN-2002&amp;quot;, &amp;quot;PROG&amp;quot;, 24000,3 ,1004);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; insert into employees( employee_id, last_name, email, hire_date, job_id, salary, department_id, manager_id)&lt;br /&gt;
  2                 values( 1004,  &amp;quot;Kyte&amp;quot;, &amp;quot;tkyte@a.ru&amp;quot;, SYSDATE-3650, &amp;quot;MGR&amp;quot;,25000 ,4, 1005);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; insert into employees( employee_id, last_name, email, hire_date, job_id, salary, department_id, manager_id)&lt;br /&gt;
  2                 values( 1005, &amp;quot;Viper&amp;quot;, &amp;quot;sdillon@a .ru&amp;quot;, SYSDATE, &amp;quot;PROG&amp;quot;, 20000, 1, 1006);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; insert into employees( employee_id, last_name, email, hire_date, job_id, salary, department_id,manager_id)&lt;br /&gt;
  2                 values( 1006, &amp;quot;Beck&amp;quot;, &amp;quot;clbeck@g.ru&amp;quot;, SYSDATE, &amp;quot;PROG&amp;quot;, 20000, 2, null);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; insert into employees( employee_id, last_name, email, hire_date, job_id, salary, department_id, manager_id)&lt;br /&gt;
  2                 values( 1007, &amp;quot;Java&amp;quot;, &amp;quot;java01@g.ru&amp;quot;, SYSDATE, &amp;quot;PROG&amp;quot;, 20000, 3, 1006);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; insert into employees( employee_id, last_name, email, hire_date, job_id, salary, department_id, manager_id)&lt;br /&gt;
  2                 values( 1008, &amp;quot;Oracle&amp;quot;, &amp;quot;oracle1@g.ru&amp;quot;, SYSDATE, &amp;quot;DBA&amp;quot;, 20000, 4, 1006);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE TABLE JOBS (&lt;br /&gt;
  2    JOB_ID      VARCHAR2 (10)  NOT NULL,&lt;br /&gt;
  3    JOB_TITLE   VARCHAR2 (35)  CONSTRAINT JOB_TITLE_NN   NOT NULL,&lt;br /&gt;
  4    MIN_SALARY  NUMBER (6),&lt;br /&gt;
  5    MAX_SALARY  NUMBER (6),&lt;br /&gt;
  6    CONSTRAINT JOB_ID_PK PRIMARY KEY ( JOB_ID ) ) ;&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO JOBS ( JOB_ID, JOB_TITLE, MIN_SALARY, MAX_SALARY ) VALUES ( &amp;quot;DBA&amp;quot;, &amp;quot;President&amp;quot;, 20000, 40000);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO JOBS ( JOB_ID, JOB_TITLE, MIN_SALARY, MAX_SALARY ) VALUES ( &amp;quot;PROG&amp;quot;, &amp;quot;Administration Vice President&amp;quot;, 15000, 30000);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO JOBS ( JOB_ID, JOB_TITLE, MIN_SALARY, MAX_SALARY ) VALUES ( &amp;quot;MGR&amp;quot;, &amp;quot;Administration Assistant&amp;quot;, 3000, 6000);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; declare&lt;br /&gt;
  2    cursor cursorValue&lt;br /&gt;
  3    is select e.last_name name, e.salary&lt;br /&gt;
  4         from employees e, jobs j&lt;br /&gt;
  5         order by salary;&lt;br /&gt;
  6&lt;br /&gt;
  7    name       varchar2(200);&lt;br /&gt;
  8    salary     number(9,2);&lt;br /&gt;
  9  begin&lt;br /&gt;
 10    for c1 in (select j.job_title, j.min_salary, j.max_salary,&lt;br /&gt;
 11                      avg(e.salary) avg_salary&lt;br /&gt;
 12                 from employees e, jobs j&lt;br /&gt;
 13                where e.job_id = j.job_id&lt;br /&gt;
 14                group by j.job_title, j.min_salary, j.max_salary&lt;br /&gt;
 15                order by j.job_title) loop&lt;br /&gt;
 16      dbms_output.put_line(c1.job_title||&amp;quot;s, average $&amp;quot;||c1.avg_salary);&lt;br /&gt;
 17    end loop;&lt;br /&gt;
 18&lt;br /&gt;
 19    open cursorValue;&lt;br /&gt;
 20    fetch cursorValue into name, salary;&lt;br /&gt;
 21    dbms_output.put_line(chr(13) || chr(13));&lt;br /&gt;
 22    dbms_output.put_line(&amp;quot;cursorValue&amp;quot;);&lt;br /&gt;
 23    while cursorValue%FOUND loop&lt;br /&gt;
 24      dbms_output.put_line(name || &amp;quot; makes $&amp;quot; || salary);&lt;br /&gt;
 25      fetch cursorValue into name, salary;&lt;br /&gt;
 26    end loop;&lt;br /&gt;
 27    close cursorValue;&lt;br /&gt;
 28  end;&lt;br /&gt;
 29  /&lt;br /&gt;
Administration Assistants, average $27500&lt;br /&gt;
Administration Vice Presidents, average $21000&lt;br /&gt;
Presidents, average $20000&lt;br /&gt;
cursorValue&lt;br /&gt;
Wells makes $20000&lt;br /&gt;
Java makes $20000&lt;br /&gt;
Beck makes $20000&lt;br /&gt;
Viper makes $20000&lt;br /&gt;
Wells makes $20000&lt;br /&gt;
Oracle makes $20000&lt;br /&gt;
Java makes $20000&lt;br /&gt;
Beck makes $20000&lt;br /&gt;
Viper makes $20000&lt;br /&gt;
Oracle makes $20000&lt;br /&gt;
Viper makes $20000&lt;br /&gt;
Beck makes $20000&lt;br /&gt;
Java makes $20000&lt;br /&gt;
Oracle makes $20000&lt;br /&gt;
Wells makes $20000&lt;br /&gt;
Bliss makes $24000&lt;br /&gt;
Bliss makes $24000&lt;br /&gt;
Bliss makes $24000&lt;br /&gt;
Kyte makes $25000&lt;br /&gt;
Kyte makes $25000&lt;br /&gt;
Kyte makes $25000&lt;br /&gt;
Lawson makes $30000&lt;br /&gt;
Lawson makes $30000&lt;br /&gt;
Lawson makes $30000&lt;br /&gt;
PL/SQL procedure successfully completed.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table employees;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt; drop table jobs;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; --&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Use cursor to store the row count==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE TABLE lecturer (&lt;br /&gt;
  2    id               NUMBER(5) PRIMARY KEY,&lt;br /&gt;
  3    first_name       VARCHAR2(20),&lt;br /&gt;
  4    last_name        VARCHAR2(20),&lt;br /&gt;
  5    major            VARCHAR2(30),&lt;br /&gt;
  6    current_credits  NUMBER(3)&lt;br /&gt;
  7    );&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO lecturer (id, first_name, last_name, major,current_credits)&lt;br /&gt;
  2                VALUES (10001, &amp;quot;Scott&amp;quot;, &amp;quot;Lawson&amp;quot;,&amp;quot;Computer Science&amp;quot;, 11);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO lecturer (id, first_name, last_name, major, current_credits)&lt;br /&gt;
  2                VALUES (10002, &amp;quot;Mar&amp;quot;, &amp;quot;Wells&amp;quot;,&amp;quot;History&amp;quot;, 4);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO lecturer (id, first_name, last_name, major,current_credits)&lt;br /&gt;
  2                VALUES (10003, &amp;quot;Jone&amp;quot;, &amp;quot;Bliss&amp;quot;,&amp;quot;Computer Science&amp;quot;, 8);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO lecturer (id, first_name, last_name, major,current_credits)&lt;br /&gt;
  2                VALUES (10004, &amp;quot;Man&amp;quot;, &amp;quot;Kyte&amp;quot;,&amp;quot;Economics&amp;quot;, 8);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO lecturer (id, first_name, last_name, major,current_credits)&lt;br /&gt;
  2                VALUES (10005, &amp;quot;Pat&amp;quot;, &amp;quot;Poll&amp;quot;,&amp;quot;History&amp;quot;, 4);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO lecturer (id, first_name, last_name, major,current_credits)&lt;br /&gt;
  2                VALUES (10006, &amp;quot;Tim&amp;quot;, &amp;quot;Viper&amp;quot;,&amp;quot;History&amp;quot;, 4);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO lecturer (id, first_name, last_name, major,current_credits)&lt;br /&gt;
  2                VALUES (10007, &amp;quot;Barbara&amp;quot;, &amp;quot;Blues&amp;quot;,&amp;quot;Economics&amp;quot;, 7);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO lecturer (id, first_name, last_name, major,current_credits)&lt;br /&gt;
  2                VALUES (10008, &amp;quot;David&amp;quot;, &amp;quot;Large&amp;quot;,&amp;quot;Music&amp;quot;, 4);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO lecturer (id, first_name, last_name, major,current_credits)&lt;br /&gt;
  2                VALUES (10009, &amp;quot;Chris&amp;quot;, &amp;quot;Elegant&amp;quot;,&amp;quot;Nutrition&amp;quot;, 8);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO lecturer (id, first_name, last_name, major,current_credits)&lt;br /&gt;
  2                VALUES (10010, &amp;quot;Rose&amp;quot;, &amp;quot;Bond&amp;quot;,&amp;quot;Music&amp;quot;, 7);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO lecturer (id, first_name, last_name, major,current_credits)&lt;br /&gt;
  2                VALUES (10011, &amp;quot;Rita&amp;quot;, &amp;quot;Johnson&amp;quot;,&amp;quot;Nutrition&amp;quot;, 8);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO lecturer (id, first_name, last_name, major,current_credits)&lt;br /&gt;
  2                VALUES (10012, &amp;quot;Sharon&amp;quot;, &amp;quot;Clear&amp;quot;,&amp;quot;Computer Science&amp;quot;, 3);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; declare&lt;br /&gt;
  2       l_emp_count number;&lt;br /&gt;
  3       i number; -- We will use this as our counter&lt;br /&gt;
  4&lt;br /&gt;
  5       CURSOR cursorValue IS&lt;br /&gt;
  6       select count(*)&lt;br /&gt;
  7       from lecturer;&lt;br /&gt;
  8       begin&lt;br /&gt;
  9       OPEN cursorValue;&lt;br /&gt;
 10       FETCH cursorValue INTO l_emp_count;&lt;br /&gt;
 11&lt;br /&gt;
 12       FOR i IN 1 .. l_emp_count LOOP&lt;br /&gt;
 13       dbms_output.put_line(&amp;quot;Employee &amp;quot; || i);&lt;br /&gt;
 14       END LOOP;&lt;br /&gt;
 15&lt;br /&gt;
 16       CLOSE cursorValue;&lt;br /&gt;
 17  end;&lt;br /&gt;
 18  /&lt;br /&gt;
Employee 1&lt;br /&gt;
Employee 2&lt;br /&gt;
Employee 3&lt;br /&gt;
Employee 4&lt;br /&gt;
Employee 5&lt;br /&gt;
Employee 6&lt;br /&gt;
Employee 7&lt;br /&gt;
Employee 8&lt;br /&gt;
Employee 9&lt;br /&gt;
Employee 10&lt;br /&gt;
Employee 11&lt;br /&gt;
Employee 12&lt;br /&gt;
PL/SQL procedure successfully completed.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table lecturer;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Use explicit cursor to fetch and store value to number variable==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
SQL&amp;gt; create table myTable(&lt;br /&gt;
  2     x number,&lt;br /&gt;
  3     y char(100)&lt;br /&gt;
  4  );&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; insert into myTable&lt;br /&gt;
  2  select rownum, &amp;quot;padding&amp;quot;&lt;br /&gt;
  3  from all_objects&lt;br /&gt;
  4  where rownum &amp;lt; 10001;&lt;br /&gt;
10000 rows created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; create or replace procedure explicit is&lt;br /&gt;
  2    cursor explicit_cur is&lt;br /&gt;
  3       select 1&lt;br /&gt;
  4       from   myTable&lt;br /&gt;
  5       where  x = 1;&lt;br /&gt;
  6    dummy number;&lt;br /&gt;
  7  begin&lt;br /&gt;
  8    for i in 1 .. 500 loop&lt;br /&gt;
  9       open explicit_cur;&lt;br /&gt;
 10           fetch explicit_cur&lt;br /&gt;
 11           into dummy;&lt;br /&gt;
 12       close explicit_cur;&lt;br /&gt;
 13    end loop;&lt;br /&gt;
 14  end;&lt;br /&gt;
 15  /&lt;br /&gt;
Procedure created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table myTable;&lt;br /&gt;
Table dropped.&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Write an explicit cursor in a FOR loop and use the data==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; DECLARE&lt;br /&gt;
  2    CURSOR c IS SELECT item_title FROM item;&lt;br /&gt;
  3  BEGIN&lt;br /&gt;
  4    FOR i IN c LOOP&lt;br /&gt;
  5      dbms_output.put_line(&amp;quot;The title is [&amp;quot;||i.item_title||&amp;quot;]&amp;quot;);&lt;br /&gt;
  6    END LOOP;&lt;br /&gt;
  7  END;&lt;br /&gt;
  8  /&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>