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

	<entry>
		<id>http://sqle.ru/index.php?title=Oracle_PL/SQL/Cursor/Nested_Cursor&amp;diff=1022&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/Nested_Cursor&amp;diff=1022&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/Nested_Cursor&amp;diff=1023&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/Nested_Cursor&amp;diff=1023&amp;oldid=prev"/>
				<updated>2010-05-26T09:54:47Z</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 within a 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; -- Cursor within a cursor&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;     create or replace procedure MULTIPLE_CURSORS_PROC is&lt;br /&gt;
  2          v_owner varchar2(40);&lt;br /&gt;
  3          v_table_name varchar2(40);&lt;br /&gt;
  4          v_column_name varchar2(100);&lt;br /&gt;
  5&lt;br /&gt;
  6          &lt;br /&gt;
  7          cursor firstCursor is&lt;br /&gt;
  8          select distinct tbl.owner, tbl.table_name&lt;br /&gt;
  9          from all_tables tbl&lt;br /&gt;
 10          where tbl.owner = &amp;quot;SYSTEM&amp;quot;;&lt;br /&gt;
 11&lt;br /&gt;
 12          &lt;br /&gt;
 13          cursor secondCursor is&lt;br /&gt;
 14          select distinct col.column_name&lt;br /&gt;
 15          from all_tab_columns col&lt;br /&gt;
 16          where col.owner = v_owner&lt;br /&gt;
 17          and col.table_name = v_table_name;&lt;br /&gt;
 18&lt;br /&gt;
 19         begin&lt;br /&gt;
 20&lt;br /&gt;
 21            &lt;br /&gt;
 22            open firstCursor;&lt;br /&gt;
 23            loop&lt;br /&gt;
 24                fetch firstCursor into v_owner, v_table_name;&lt;br /&gt;
 25&lt;br /&gt;
 26                dbms_output.put_line(&amp;quot;v_owner: &amp;quot;||v_owner);&lt;br /&gt;
 27                dbms_output.put_line(&amp;quot;v_table_name: &amp;quot;||v_table_name);&lt;br /&gt;
 28&lt;br /&gt;
 29                open secondCursor;&lt;br /&gt;
 30                loop&lt;br /&gt;
 31                    fetch secondCursor into v_column_name;&lt;br /&gt;
 32                    dbms_output.put_line(&amp;quot;v_column_name: &amp;quot;||v_column_name);&lt;br /&gt;
 33                end loop;&lt;br /&gt;
 34                close secondCursor;&lt;br /&gt;
 35&lt;br /&gt;
 36             end loop;&lt;br /&gt;
 37             close firstCursor;&lt;br /&gt;
 38&lt;br /&gt;
 39      EXCEPTION&lt;br /&gt;
 40      WHEN OTHERS THEN&lt;br /&gt;
 41            raise_application_error(-20001,&amp;quot;An error was encountered - &amp;quot;||SQLCODE||&amp;quot; -ERROR- &amp;quot;||SQLERRM);&lt;br /&gt;
 42      end MULTIPLE_CURSORS_PROC;&lt;br /&gt;
 43      /&lt;br /&gt;
Procedure created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;     exec MULTIPLE_CURSORS_PROC();&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;
==Nested 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; CREATE TABLE emp (&lt;br /&gt;
  2    id         NUMBER PRIMARY KEY,&lt;br /&gt;
  3    fname VARCHAR2(50),&lt;br /&gt;
  4    lname  VARCHAR2(50)&lt;br /&gt;
  5  );&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO emp (id, fname, lname)VALUES (1, &amp;quot;A&amp;quot;, &amp;quot;B&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO emp (id, fname, lname)VALUES (2, &amp;quot;C&amp;quot;, &amp;quot;D&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO emp (id, fname, lname)VALUES (3, &amp;quot;Enn&amp;quot;, &amp;quot;F&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO emp (id, fname, lname)VALUES (4, &amp;quot;G&amp;quot;, &amp;quot;H&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO emp (id, fname, lname)VALUES (5, &amp;quot;G&amp;quot;, &amp;quot;Z&amp;quot;);&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 TABLE books (&lt;br /&gt;
  2    isbn      CHAR(10) PRIMARY KEY,&lt;br /&gt;
  3    category  VARCHAR2(20),&lt;br /&gt;
  4    title     VARCHAR2(100),&lt;br /&gt;
  5    num_pages NUMBER,&lt;br /&gt;
  6    price     NUMBER,&lt;br /&gt;
  7    copyright NUMBER(4),&lt;br /&gt;
  8    emp1   NUMBER,&lt;br /&gt;
  9    emp2   NUMBER,&lt;br /&gt;
 10    emp3   NUMBER&lt;br /&gt;
 11  );&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO books (isbn, category, title, num_pages, price, copyright, emp1, emp2, emp3)&lt;br /&gt;
  2             VALUES (&amp;quot;1&amp;quot;, &amp;quot;Database&amp;quot;, &amp;quot;Oracle&amp;quot;, 563, 39.99, 2009, 1, 2, 3);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO books (isbn, category, title, num_pages, price, copyright, emp1, emp2)&lt;br /&gt;
  2             VALUES (&amp;quot;2&amp;quot;, &amp;quot;Database&amp;quot;, &amp;quot;MySQL&amp;quot;, 765, 44.99, 2009, 4, 5);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO books (isbn, category, title, num_pages, price, copyright, emp1, emp2, emp3)&lt;br /&gt;
  2             VALUES (&amp;quot;3&amp;quot;, &amp;quot;Database&amp;quot;, &amp;quot;SQL Server&amp;quot;, 404, 39.99, 2001, 6, 7, 8);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; SET SERVEROUTPUT ON ESCAPE OFF&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; DECLARE&lt;br /&gt;
  2&lt;br /&gt;
  3     cv_emp SYS_REFCURSOR;&lt;br /&gt;
  4     v_title BOOKS.TITLE%TYPE;&lt;br /&gt;
  5     v_emp emp%ROWTYPE;&lt;br /&gt;
  6     v_counter PLS_INTEGER := 0;&lt;br /&gt;
  7&lt;br /&gt;
  8     CURSOR book_cur IS SELECT b.title,CURSOR (SELECT * FROM emp a WHERE a.id = b.emp1 OR a.id = b.emp2 OR a.id = b.emp3)&lt;br /&gt;
  9        FROM books b&lt;br /&gt;
 10        WHERE isbn = &amp;quot;1&amp;quot;;&lt;br /&gt;
 11&lt;br /&gt;
 12  BEGIN&lt;br /&gt;
 13&lt;br /&gt;
 14     DBMS_OUTPUT.ENABLE(1000000);&lt;br /&gt;
 15&lt;br /&gt;
 16     OPEN book_cur;&lt;br /&gt;
 17&lt;br /&gt;
 18     LOOP&lt;br /&gt;
 19        FETCH book_cur INTO v_title, cv_emp;&lt;br /&gt;
 20        EXIT WHEN book_cur%NOTFOUND;&lt;br /&gt;
 21&lt;br /&gt;
 22        v_counter := 0;&lt;br /&gt;
 23&lt;br /&gt;
 24        DBMS_OUTPUT.PUT_LINE(&amp;quot;Title from the main cursor: &amp;quot;||v_title);&lt;br /&gt;
 25&lt;br /&gt;
 26        LOOP&lt;br /&gt;
 27           FETCH cv_emp INTO v_emp;&lt;br /&gt;
 28           EXIT WHEN cv_emp%NOTFOUND;&lt;br /&gt;
 29&lt;br /&gt;
 30           v_counter := v_counter + 1;&lt;br /&gt;
 31&lt;br /&gt;
 32           DBMS_OUTPUT.PUT_LINE(&amp;quot;emp&amp;quot;||v_counter||&amp;quot;: &amp;quot;||v_emp.fname||&amp;quot; &amp;quot;||v_emp.lname);&lt;br /&gt;
 33        END LOOP;&lt;br /&gt;
 34     END LOOP;&lt;br /&gt;
 35&lt;br /&gt;
 36     CLOSE book_cur;&lt;br /&gt;
 37&lt;br /&gt;
 38  END;&lt;br /&gt;
 39  /&lt;br /&gt;
Title from the main cursor: Oracle&lt;br /&gt;
emp1: Enn F&lt;br /&gt;
emp2: C D&lt;br /&gt;
emp3: A B&lt;br /&gt;
PL/SQL procedure successfully completed.&lt;br /&gt;
SQL&amp;gt; drop table emp;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt; drop table books;&lt;br /&gt;
Table dropped.&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>