<?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_Tutorial%2FCursor%2FCursor_Parameter</id>
		<title>Oracle PL/SQL Tutorial/Cursor/Cursor Parameter - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://sqle.ru/index.php?action=history&amp;feed=atom&amp;title=Oracle_PL%2FSQL_Tutorial%2FCursor%2FCursor_Parameter"/>
		<link rel="alternate" type="text/html" href="http://sqle.ru/index.php?title=Oracle_PL/SQL_Tutorial/Cursor/Cursor_Parameter&amp;action=history"/>
		<updated>2026-04-06T17:04:29Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://sqle.ru/index.php?title=Oracle_PL/SQL_Tutorial/Cursor/Cursor_Parameter&amp;diff=3146&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_Tutorial/Cursor/Cursor_Parameter&amp;diff=3146&amp;oldid=prev"/>
				<updated>2010-05-26T13:45:46Z</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_Tutorial/Cursor/Cursor_Parameter&amp;diff=3147&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://sqle.ru/index.php?title=Oracle_PL/SQL_Tutorial/Cursor/Cursor_Parameter&amp;diff=3147&amp;oldid=prev"/>
				<updated>2010-05-26T10:05:21Z</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 example of parameterized cursor using cursor FOR 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;
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; create table product(&lt;br /&gt;
  2     product_id number(4)     not null,&lt;br /&gt;
  3     product_description varchar2(20) not null&lt;br /&gt;
  4  );&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; insert into product values (1,&amp;quot;Java&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into product values (2,&amp;quot;Oracle&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into product values (3,&amp;quot;C#&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into product values (4,&amp;quot;Javascript&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into product values (5,&amp;quot;Python&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 company(&lt;br /&gt;
  2     product_id        number(4)    not null,&lt;br /&gt;
  3     company_id          NUMBER(8)    not null,&lt;br /&gt;
  4     company_short_name  varchar2(30) not null,&lt;br /&gt;
  5     company_long_name   varchar2(60)&lt;br /&gt;
  6  );&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt; insert into company values(1,1001,&amp;quot;A Inc.&amp;quot;,&amp;quot;Long Name A Inc.&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into company values(1,1002,&amp;quot;B Inc.&amp;quot;,&amp;quot;Long Name B Inc.&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into company values(1,1003,&amp;quot;C Inc.&amp;quot;,&amp;quot;Long Name C Inc.&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into company values(2,1004,&amp;quot;D Inc.&amp;quot;,&amp;quot;Long Name D Inc.&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into company values(2,1005,&amp;quot;E Inc.&amp;quot;,&amp;quot;Long Name E Inc.&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into company values(2,1006,&amp;quot;F Inc.&amp;quot;,&amp;quot;Long Name F Inc.&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;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; DECLARE&lt;br /&gt;
  2    CURSOR cursorValue(p_product_id NUMBER) IS&lt;br /&gt;
  3      SELECT h.product_description,o.rupany_short_name&lt;br /&gt;
  4      FROM company o,product h&lt;br /&gt;
  5      WHERE o.product_id =h.product_id&lt;br /&gt;
  6      AND h.product_id =p_product_id&lt;br /&gt;
  7      ORDER by 2;&lt;br /&gt;
  8    v_company_rec cursorValue%ROWTYPE;&lt;br /&gt;
  9  BEGIN&lt;br /&gt;
 10&lt;br /&gt;
 11    FOR idx in cursorValue(1) LOOP&lt;br /&gt;
 12      dbms_output.put_line(rpad(idx.product_description,20,&amp;quot; &amp;quot;)||&amp;quot; &amp;quot;||&lt;br /&gt;
 13      rpad(idx.rupany_short_name,30,&amp;quot; &amp;quot;));&lt;br /&gt;
 14    END LOOP;&lt;br /&gt;
 15&lt;br /&gt;
 16    FOR idx in cursorValue(2) LOOP&lt;br /&gt;
 17      dbms_output.put_line(rpad(idx.product_description,20,&amp;quot; &amp;quot;)||&amp;quot; &amp;quot;||&lt;br /&gt;
 18      rpad(idx.rupany_short_name,30,&amp;quot; &amp;quot;));&lt;br /&gt;
 19    END LOOP;&lt;br /&gt;
 20  END;&lt;br /&gt;
 21  /&lt;br /&gt;
Java                 A Inc.&lt;br /&gt;
Java                 B Inc.&lt;br /&gt;
Java                 C Inc.&lt;br /&gt;
Oracle               D Inc.&lt;br /&gt;
Oracle               E Inc.&lt;br /&gt;
Oracle               F Inc.&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; drop table product;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table company;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== Open cursor with parameter==&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;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; create table employee (&lt;br /&gt;
  2  id                             number,&lt;br /&gt;
  3  employee_type_id               number,&lt;br /&gt;
  4  external_id                    varchar2(30),&lt;br /&gt;
  5  first_name                     varchar2(30),&lt;br /&gt;
  6  middle_name                    varchar2(30),&lt;br /&gt;
  7  last_name                      varchar2(30),&lt;br /&gt;
  8  name                           varchar2(100),&lt;br /&gt;
  9  birth_date                     date  ,&lt;br /&gt;
 10  gender_id                      number );&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; set serveroutput on size 1000000;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; declare&lt;br /&gt;
  2      cursor c_worker(aiv_last_name in employee.last_name%TYPE) is&lt;br /&gt;
  3      select first_name&lt;br /&gt;
  4      from   employee&lt;br /&gt;
  5      where  last_name like aiv_last_name||&amp;quot;%&amp;quot;&lt;br /&gt;
  6      order by id;&lt;br /&gt;
  7&lt;br /&gt;
  8      v_first_name employee.first_name%TYPE;&lt;br /&gt;
  9&lt;br /&gt;
 10  begin&lt;br /&gt;
 11    open c_worker(&amp;quot;DOE&amp;quot;);&lt;br /&gt;
 12    loop&lt;br /&gt;
 13      fetch c_worker into v_first_name;&lt;br /&gt;
 14&lt;br /&gt;
 15      if c_worker%notfound then&lt;br /&gt;
 16        close c_worker;&lt;br /&gt;
 17        exit;&lt;br /&gt;
 18      end if;&lt;br /&gt;
 19&lt;br /&gt;
 20      DBMS_OUTPUT.PUT_LINE(v_first_name);&lt;br /&gt;
 21    end loop;&lt;br /&gt;
 22  end;&lt;br /&gt;
 23  /&lt;br /&gt;
PL/SQL procedure successfully completed.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table employee;&lt;br /&gt;
Table dropped.&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== Parameterized 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;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE TABLE books(&lt;br /&gt;
  2    book_id  NUMBER  NOT NULL  PRIMARY KEY,&lt;br /&gt;
  3    title  VARCHAR2(200),&lt;br /&gt;
  4    author  VARCHAR2(200) );&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO books VALUES(1, &amp;quot;Oracle SQL*Plus&amp;quot;, &amp;quot;GENNICK,JONATHAN&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO books VALUES(2, &amp;quot;Oracle PL/SQL Programming&amp;quot;, &amp;quot;FEUERSTEIN,STEVEN&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO books VALUES(3, &amp;quot;Oracle Built-in Packages&amp;quot;, &amp;quot;FEUERSTEIN,STEVEN&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; set serveroutput on size 500000&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; DECLARE&lt;br /&gt;
  2&lt;br /&gt;
  3     CURSOR books_cur(author_in IN books.author%TYPE) IS&lt;br /&gt;
  4     SELECT *&lt;br /&gt;
  5       FROM books&lt;br /&gt;
  6      WHERE author = author_in;&lt;br /&gt;
  7&lt;br /&gt;
  8     book_count PLS_INTEGER;&lt;br /&gt;
  9&lt;br /&gt;
 10  BEGIN&lt;br /&gt;
 11&lt;br /&gt;
 12     FOR book_rec IN books_cur (author_in =&amp;gt; &amp;quot;FEUERSTEIN, STEVEN&amp;quot;)&lt;br /&gt;
 13     LOOP&lt;br /&gt;
 14        -- ... process data ...&lt;br /&gt;
 15        book_count := books_cur%ROWCOUNT;&lt;br /&gt;
 16     END LOOP;&lt;br /&gt;
 17&lt;br /&gt;
 18     IF book_count &amp;gt; 10&lt;br /&gt;
 19     THEN&lt;br /&gt;
 20       dbms_output.put_line(&amp;quot;Lotsa books, time for vacation.&amp;quot;);&lt;br /&gt;
 21     ELSE&lt;br /&gt;
 22       dbms_output.put_line(&amp;quot;Keep writing slacker.&amp;quot;);&lt;br /&gt;
 23     END IF;&lt;br /&gt;
 24&lt;br /&gt;
 25  END;&lt;br /&gt;
 26  /&lt;br /&gt;
Keep writing slacker.&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; DROP TABLE books;&lt;br /&gt;
Table dropped.&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== Passing parameters to cursors==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Basic Syntax for Passing Parameters in a Cursor&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;You can pass a literal value, as in&amp;lt;/p&amp;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;
open c_emp (10);&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>