<?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%2Fref_cursor</id>
		<title>Oracle PL/SQL/Cursor/ref 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%2Fref_cursor"/>
		<link rel="alternate" type="text/html" href="http://sqle.ru/index.php?title=Oracle_PL/SQL/Cursor/ref_cursor&amp;action=history"/>
		<updated>2026-05-26T01:42:42Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://sqle.ru/index.php?title=Oracle_PL/SQL/Cursor/ref_cursor&amp;diff=1008&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/ref_cursor&amp;diff=1008&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/ref_cursor&amp;diff=1009&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/ref_cursor&amp;diff=1009&amp;oldid=prev"/>
				<updated>2010-05-26T09:54:43Z</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;==Cursor Variables Assignment==&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 EMP (EMPNO NUMBER(4) NOT NULL,&lt;br /&gt;
  2                    ENAME VARCHAR2(10),&lt;br /&gt;
  3                    JOB VARCHAR2(9),&lt;br /&gt;
  4                    MGR NUMBER(4),&lt;br /&gt;
  5                    HIREDATE DATE,&lt;br /&gt;
  6                    SAL NUMBER(7, 2),&lt;br /&gt;
  7                    COMM NUMBER(7, 2),&lt;br /&gt;
  8                    DEPTNO NUMBER(2));&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;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; DECLARE&lt;br /&gt;
  2       TYPE rc is REF CURSOR;&lt;br /&gt;
  3       v_rc1 rc;&lt;br /&gt;
  4       v_rc2 rc;&lt;br /&gt;
  5       hrc_rec emp%ROWTYPE;&lt;br /&gt;
  6  BEGIN&lt;br /&gt;
  7       OPEN v_rc1 FOR SELECT * from emp;&lt;br /&gt;
  8       v_rc2 := v_rc1;&lt;br /&gt;
  9       LOOP&lt;br /&gt;
 10           FETCH v_rc2 INTO hrc_rec;&lt;br /&gt;
 11           EXIT WHEN v_rc2%NOTFOUND;&lt;br /&gt;
 12           dbms_output.put_line(hrc_rec.empno ||&amp;quot; &amp;quot;||hrc_rec.ename);&lt;br /&gt;
 13        END LOOP;&lt;br /&gt;
 14        CLOSE v_rc2;&lt;br /&gt;
 15  END;&lt;br /&gt;
 16  /&lt;br /&gt;
7369 SMITH&lt;br /&gt;
7499 ALLEN&lt;br /&gt;
7521 WARD&lt;br /&gt;
7566 JONES&lt;br /&gt;
7654 MARTIN&lt;br /&gt;
7698 BLAKE&lt;br /&gt;
7782 CLARK&lt;br /&gt;
7788 SCOTT&lt;br /&gt;
7839 KING&lt;br /&gt;
7844 TURNER&lt;br /&gt;
7876 ADAMS&lt;br /&gt;
7900 JAMES&lt;br /&gt;
7902 FORD&lt;br /&gt;
7934 MILLER&lt;br /&gt;
PL/SQL procedure successfully completed.&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;&lt;br /&gt;
SQL&amp;gt; --&lt;br /&gt;
 &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==declare ref 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;&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; select * from employees;&lt;br /&gt;
EMPLOYEE_ID LAST_NAME                                          EMAIL                          HIRE_DATE JOB_ID                         DEPARTMENT_ID     SALARY MANAGER_ID&lt;br /&gt;
----------- -------------------------------------------------- ------------------------------ --------- ------------------------------ ------------- ---------- ----------&lt;br /&gt;
       1001 Lawson                                             lawson@g.ru                   01-JAN-02 MGR                                        1      30000       1004&lt;br /&gt;
       1002 Wells                                              wells@g.ru                    01-JAN-02 DBA                                        2      20000       1005&lt;br /&gt;
       1003 Bliss                                              bliss@g.ru                    01-JAN-02 PROG                                       3      24000       1004&lt;br /&gt;
       1004 Kyte                                               tkyte@a.ru                    14-JUN-98 MGR                                        4      25000       1005&lt;br /&gt;
       1005 Viper                                              sdillon@a .ru                 11-JUN-08 PROG                                       1      20000       1006&lt;br /&gt;
       1006 Beck                                               clbeck@g.ru                   11-JUN-08 PROG                                       2      20000&lt;br /&gt;
       1007 Java                                               java01@g.ru                   11-JUN-08 PROG                                       3      20000       1006&lt;br /&gt;
       1008 Oracle                                             oracle1@g.ru                  11-JUN-08 DBA                                        4      20000       1006&lt;br /&gt;
8 rows selected.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;  declare&lt;br /&gt;
  2      type refcur_t is ref cursor;&lt;br /&gt;
  3&lt;br /&gt;
  4      type emp_refcur_t is ref cursor&lt;br /&gt;
  5        return employees%rowtype;&lt;br /&gt;
  6    begin&lt;br /&gt;
  7      null;&lt;br /&gt;
  8    end;&lt;br /&gt;
  9    /&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;
 &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==strong ref 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; 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      type emp_job_rec is record(&lt;br /&gt;
  3        employee_id     number,&lt;br /&gt;
  4        employee_name   varchar2(56),&lt;br /&gt;
  5        job_title       varchar2(35)&lt;br /&gt;
  6      );&lt;br /&gt;
  7&lt;br /&gt;
  8      type emp_job_refcur_type is ref cursor&lt;br /&gt;
  9        return emp_job_rec;&lt;br /&gt;
 10&lt;br /&gt;
 11      emp_refcur emp_job_refcur_type;&lt;br /&gt;
 12&lt;br /&gt;
 13      emp_job    emp_job_rec;&lt;br /&gt;
 14    begin&lt;br /&gt;
 15      open emp_refcur for&lt;br /&gt;
 16        select e.employee_id,&lt;br /&gt;
 17               e.last_name &amp;quot;employee_name&amp;quot;,&lt;br /&gt;
 18               j.job_title&lt;br /&gt;
 19          from employees e, jobs j&lt;br /&gt;
 20         where e.job_id = j.job_id&lt;br /&gt;
 21           and rownum &amp;lt; 11&lt;br /&gt;
 22         order by 1;&lt;br /&gt;
 23&lt;br /&gt;
 24      fetch emp_refcur into emp_job;&lt;br /&gt;
 25      while emp_refcur%FOUND loop&lt;br /&gt;
 26        dbms_output.put(emp_job.employee_name || &amp;quot;&amp;quot;&amp;quot;s job is &amp;quot;);&lt;br /&gt;
 27        dbms_output.put_line(emp_job.job_title);&lt;br /&gt;
 28        fetch emp_refcur into emp_job;&lt;br /&gt;
 29      end loop;&lt;br /&gt;
 30    end;&lt;br /&gt;
 31    /&lt;br /&gt;
Lawson&amp;quot;s job is Administration Assistant&lt;br /&gt;
Wells&amp;quot;s job is President&lt;br /&gt;
Bliss&amp;quot;s job is Administration Vice President&lt;br /&gt;
Kyte&amp;quot;s job is Administration Assistant&lt;br /&gt;
Viper&amp;quot;s job is Administration Vice President&lt;br /&gt;
Beck&amp;quot;s job is Administration Vice President&lt;br /&gt;
Java&amp;quot;s job is Administration Vice President&lt;br /&gt;
Oracle&amp;quot;s job is President&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;
 &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Use native dynamic SQL to process queries.==&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; CREATE OR REPLACE PACKAGE NativeDynamic AS&lt;br /&gt;
  2    TYPE t_RefCur IS REF CURSOR;&lt;br /&gt;
  3&lt;br /&gt;
  4    FUNCTION lecturerQuery(p_WhereClause IN VARCHAR2)&lt;br /&gt;
  5      RETURN t_RefCur;&lt;br /&gt;
  6&lt;br /&gt;
  7    FUNCTION lecturerQuery2(p_Major IN VARCHAR2)&lt;br /&gt;
  8      RETURN t_RefCur;&lt;br /&gt;
  9  END NativeDynamic;&lt;br /&gt;
 10  /&lt;br /&gt;
Package created.&lt;br /&gt;
SQL&amp;gt; show errors&lt;br /&gt;
No errors.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE PACKAGE BODY NativeDynamic AS&lt;br /&gt;
  2    FUNCTION lecturerQuery(p_WhereClause IN VARCHAR2)&lt;br /&gt;
  3      RETURN t_RefCur IS&lt;br /&gt;
  4      v_ReturnCursor t_RefCur;&lt;br /&gt;
  5      v_SQLStatement VARCHAR2(500);&lt;br /&gt;
  6    BEGIN&lt;br /&gt;
  7      v_SQLStatement := &amp;quot;SELECT * FROM lecturer &amp;quot; || p_WhereClause;&lt;br /&gt;
  8&lt;br /&gt;
  9      OPEN v_ReturnCursor FOR v_SQLStatement;&lt;br /&gt;
 10      RETURN v_ReturnCursor;&lt;br /&gt;
 11    END lecturerQuery;&lt;br /&gt;
 12&lt;br /&gt;
 13    FUNCTION lecturerQuery2(p_Major IN VARCHAR2)&lt;br /&gt;
 14      RETURN t_RefCur IS&lt;br /&gt;
 15      v_ReturnCursor t_RefCur;&lt;br /&gt;
 16      v_SQLStatement VARCHAR2(500);&lt;br /&gt;
 17    BEGIN&lt;br /&gt;
 18      v_SQLStatement := &amp;quot;SELECT * FROM lecturer WHERE major = :m&amp;quot;;&lt;br /&gt;
 19&lt;br /&gt;
 20      OPEN v_ReturnCursor FOR v_SQLStatement USING p_Major;&lt;br /&gt;
 21      RETURN v_ReturnCursor;&lt;br /&gt;
 22    END lecturerQuery2;&lt;br /&gt;
 23  END NativeDynamic;&lt;br /&gt;
 24  /&lt;br /&gt;
Package body created.&lt;br /&gt;
SQL&amp;gt; show errors&lt;br /&gt;
No errors.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; set serveroutput on format wrapped&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; DECLARE&lt;br /&gt;
  2    myLecturer lecturer%ROWTYPE;&lt;br /&gt;
  3    myLecturerCur NativeDynamic.t_RefCur;&lt;br /&gt;
  4  BEGIN&lt;br /&gt;
  5    myLecturerCur :=&lt;br /&gt;
  6      NativeDynamic.lecturerQuery(&amp;quot;WHERE MOD(id, 2) = 0&amp;quot;);&lt;br /&gt;
  7&lt;br /&gt;
  8    DBMS_OUTPUT.PUT_LINE(&amp;quot;The following lecturer have even IDs:&amp;quot;);&lt;br /&gt;
  9    LOOP&lt;br /&gt;
 10      FETCH myLecturerCur INTO myLecturer;&lt;br /&gt;
 11      EXIT WHEN myLecturerCur%NOTFOUND;&lt;br /&gt;
 12      DBMS_OUTPUT.PUT_LINE(&amp;quot;  &amp;quot; || myLecturer.id || &amp;quot;: &amp;quot; ||&lt;br /&gt;
 13                           myLecturer.first_name || &amp;quot; &amp;quot; ||&lt;br /&gt;
 14                           myLecturer.last_name);&lt;br /&gt;
 15    END LOOP;&lt;br /&gt;
 16    CLOSE myLecturerCur;&lt;br /&gt;
 17&lt;br /&gt;
 18    myLecturerCur :=&lt;br /&gt;
 19      NativeDynamic.lecturerQuery2(&amp;quot;Music&amp;quot;);&lt;br /&gt;
 20&lt;br /&gt;
 21    DBMS_OUTPUT.PUT_LINE(&lt;br /&gt;
 22      &amp;quot;The following lecturer are music majors:&amp;quot;);&lt;br /&gt;
 23    LOOP&lt;br /&gt;
 24      FETCH myLecturerCur INTO myLecturer;&lt;br /&gt;
 25      EXIT WHEN myLecturerCur%NOTFOUND;&lt;br /&gt;
 26      DBMS_OUTPUT.PUT_LINE(&amp;quot;  &amp;quot; || myLecturer.id || &amp;quot;: &amp;quot; ||&lt;br /&gt;
 27                           myLecturer.first_name || &amp;quot; &amp;quot; ||&lt;br /&gt;
 28                           myLecturer.last_name);&lt;br /&gt;
 29    END LOOP;&lt;br /&gt;
 30    CLOSE myLecturerCur;&lt;br /&gt;
 31  END;&lt;br /&gt;
 32  /&lt;br /&gt;
The following lecturer have even IDs:&lt;br /&gt;
  10002: Mar Wells&lt;br /&gt;
  10004: Man Kyte&lt;br /&gt;
  10006: Tim Viper&lt;br /&gt;
  10008: David Large&lt;br /&gt;
  10010: Rose Bond&lt;br /&gt;
  10012: Sharon Clear&lt;br /&gt;
The following lecturer are music majors:&lt;br /&gt;
  10008: David Large&lt;br /&gt;
  10010: Rose Bond&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 lecturer;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
 &amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>