<?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%2FObject_Oriented_Database%2FCursor</id>
		<title>Oracle PL/SQL/Object Oriented Database/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%2FObject_Oriented_Database%2FCursor"/>
		<link rel="alternate" type="text/html" href="http://sqle.ru/index.php?title=Oracle_PL/SQL/Object_Oriented_Database/Cursor&amp;action=history"/>
		<updated>2026-04-04T21:45:57Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://sqle.ru/index.php?title=Oracle_PL/SQL/Object_Oriented_Database/Cursor&amp;diff=2661&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/Object_Oriented_Database/Cursor&amp;diff=2661&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/Object_Oriented_Database/Cursor&amp;diff=2662&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://sqle.ru/index.php?title=Oracle_PL/SQL/Object_Oriented_Database/Cursor&amp;diff=2662&amp;oldid=prev"/>
				<updated>2010-05-26T10:02:34Z</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 for user-defined object type==&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 OR REPLACE TYPE address AS OBJECT (&lt;br /&gt;
  2    street_1      VARCHAR2(40),&lt;br /&gt;
  3    street_2      VARCHAR2(40),&lt;br /&gt;
  4    city          VARCHAR2(40),&lt;br /&gt;
  5    state_abbr    VARCHAR2(2),&lt;br /&gt;
  6    zip_code      VARCHAR2(5),&lt;br /&gt;
  7    phone_number  VARCHAR2(10),&lt;br /&gt;
  8    MEMBER PROCEDURE ChangeAddress (&lt;br /&gt;
  9      st_1 IN VARCHAR2, st_2 IN VARCHAR2, cty IN VARCHAR2,&lt;br /&gt;
 10      state IN VARCHAR2, zip IN VARCHAR2),&lt;br /&gt;
 11    MEMBER FUNCTION getStreet (line_no IN number) RETURN VARCHAR2,&lt;br /&gt;
 12    MEMBER FUNCTION getCity RETURN VARCHAR2,&lt;br /&gt;
 13    MEMBER FUNCTION getStateAbbr RETURN VARCHAR2,&lt;br /&gt;
 14    MEMBER FUNCTION getPostalCode RETURN VARCHAR2,&lt;br /&gt;
 15    MEMBER FUNCTION getPhone RETURN VARCHAR2,&lt;br /&gt;
 16    MEMBER PROCEDURE setPhone (newPhone IN VARCHAR2)&lt;br /&gt;
 17  );&lt;br /&gt;
 18  /&lt;br /&gt;
Type created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE TYPE BODY address AS&lt;br /&gt;
  2    MEMBER PROCEDURE ChangeAddress (&lt;br /&gt;
  3      st_1 IN VARCHAR2, st_2 IN VARCHAR2, cty IN VARCHAR2,&lt;br /&gt;
  4      state IN VARCHAR2, zip IN VARCHAR2) IS&lt;br /&gt;
  5    BEGIN&lt;br /&gt;
  6      IF ( st_1 IS NULL ) THEN&lt;br /&gt;
 18       RAISE_application_error(-20001,&amp;quot;The new Address is invalid.&amp;quot;);&lt;br /&gt;
 19      ELSE&lt;br /&gt;
 20        street_1 := st_1;&lt;br /&gt;
 21        street_2 := st_2;&lt;br /&gt;
 22        city := cty;&lt;br /&gt;
 23        state_abbr := upper(state);&lt;br /&gt;
 24        zip_code := zip;&lt;br /&gt;
 25      END IF;&lt;br /&gt;
 26    END;&lt;br /&gt;
 27&lt;br /&gt;
 28    MEMBER FUNCTION getStreet (line_no IN number)&lt;br /&gt;
 29      RETURN VARCHAR2 IS&lt;br /&gt;
 30    BEGIN&lt;br /&gt;
 31      IF line_no = 1 THEN&lt;br /&gt;
 32        RETURN street_1;&lt;br /&gt;
 33      ELSIF line_no = 2 THEN&lt;br /&gt;
 34        RETURN street_2;&lt;br /&gt;
 35      ELSE&lt;br /&gt;
 36        RETURN &amp;quot; &amp;quot;;  &lt;br /&gt;
 37      END IF;&lt;br /&gt;
 38    END;&lt;br /&gt;
 39&lt;br /&gt;
 40    MEMBER FUNCTION getCity RETURN VARCHAR2 IS&lt;br /&gt;
 41    BEGIN&lt;br /&gt;
 42      RETURN city;&lt;br /&gt;
 43    END;&lt;br /&gt;
 44&lt;br /&gt;
 45    MEMBER FUNCTION getStateAbbr RETURN VARCHAR2 IS&lt;br /&gt;
 46    BEGIN&lt;br /&gt;
 47      RETURN state_abbr;&lt;br /&gt;
 48    END;&lt;br /&gt;
 49&lt;br /&gt;
 50    MEMBER FUNCTION getPostalCode RETURN VARCHAR2 IS&lt;br /&gt;
 51    BEGIN&lt;br /&gt;
 52      RETURN zip_code;&lt;br /&gt;
 53    END;&lt;br /&gt;
 54&lt;br /&gt;
 55    MEMBER FUNCTION getPhone RETURN VARCHAR2 IS&lt;br /&gt;
 56    BEGIN&lt;br /&gt;
 57      RETURN phone_number;&lt;br /&gt;
 58    END;&lt;br /&gt;
 59&lt;br /&gt;
 60    MEMBER PROCEDURE setPhone (newPhone IN VARCHAR2) IS&lt;br /&gt;
 61    BEGIN&lt;br /&gt;
 62      phone_number := newPhone;&lt;br /&gt;
 63    END;&lt;br /&gt;
 64  END;&lt;br /&gt;
 65  /&lt;br /&gt;
Type body created.&lt;br /&gt;
SQL&amp;gt; set serveroutput on&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; set echo on&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE TYPE appartment AS OBJECT (&lt;br /&gt;
  2    BldgName          VARCHAR2(40),&lt;br /&gt;
  3    BldgAddress       address,&lt;br /&gt;
  4    BldgMgr           INTEGER,&lt;br /&gt;
  5    MEMBER PROCEDURE  ChangeMgr (NewMgr IN INTEGER),&lt;br /&gt;
  6    ORDER MEMBER FUNCTION Compare (Otherappartment IN appartment)&lt;br /&gt;
  7        RETURN INTEGER&lt;br /&gt;
  8    );&lt;br /&gt;
  9  /&lt;br /&gt;
Type created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE TYPE BODY appartment AS&lt;br /&gt;
  2    MEMBER PROCEDURE  ChangeMgr(NewMgr IN INTEGER) IS&lt;br /&gt;
  3      BEGIN&lt;br /&gt;
  4        BldgMgr := NewMgr;&lt;br /&gt;
  5      END;&lt;br /&gt;
  6&lt;br /&gt;
  7    ORDER MEMBER FUNCTION Compare (Otherappartment IN appartment)&lt;br /&gt;
  8    RETURN INTEGER IS&lt;br /&gt;
  9        BldgName1     VARCHAR2(40);&lt;br /&gt;
 10        BldgName2     VARCHAR2(40);&lt;br /&gt;
 11      BEGIN&lt;br /&gt;
 12        BldgName1 := upper(ltrim(rtrim(BldgName)));&lt;br /&gt;
 13        BldgName2 := upper(ltrim(rtrim(Otherappartment.BldgName)));&lt;br /&gt;
 14&lt;br /&gt;
 15        IF BldgName1 = BldgName2 THEN&lt;br /&gt;
 16          RETURN 0;&lt;br /&gt;
 17        ELSIF BldgName1 &amp;lt; BldgName2 THEN&lt;br /&gt;
 18          RETURN -1;&lt;br /&gt;
 19        ELSE&lt;br /&gt;
 20          RETURN 1;&lt;br /&gt;
 21        END IF;&lt;br /&gt;
 22      END;&lt;br /&gt;
 23  END;&lt;br /&gt;
 24  /&lt;br /&gt;
Type body created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE TABLE appartments OF appartment;&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; set echo on&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO appartments values (appartment(&amp;quot;Headquarters appartment&amp;quot;,address(&amp;quot;1 J&amp;quot;,&amp;quot;&amp;quot;,&amp;quot;Detroit&amp;quot;,&amp;quot;MI&amp;quot;,&amp;quot;48226&amp;quot;,&amp;quot;&amp;quot;),599));&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; SELECT * from appartments;&lt;br /&gt;
BLDGNAME&lt;br /&gt;
----------------------------------------&lt;br /&gt;
BLDGADDRESS(STREET_1, STREET_2, CITY, STATE_ABBR,&lt;br /&gt;
--------------------------------------------------&lt;br /&gt;
   BLDGMGR&lt;br /&gt;
----------&lt;br /&gt;
Headquarters appartment&lt;br /&gt;
ADDRESS(&amp;quot;1 J&amp;quot;, NULL, &amp;quot;Detroit&amp;quot;, &amp;quot;MI&amp;quot;, &amp;quot;48226&amp;quot;, NUL&lt;br /&gt;
L)&lt;br /&gt;
       599&lt;br /&gt;
&lt;br /&gt;
1 row selected.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; DECLARE&lt;br /&gt;
  2    this_appartment   appartment;&lt;br /&gt;
  3&lt;br /&gt;
  4    CURSOR all_appartments IS&lt;br /&gt;
  5      SELECT value (b) AS bldg&lt;br /&gt;
  6        FROM appartments b&lt;br /&gt;
  7       ORDER BY b.BldgName;&lt;br /&gt;
  8&lt;br /&gt;
  9  BEGIN&lt;br /&gt;
 10    FOR one_appartment IN all_appartments LOOP&lt;br /&gt;
 11      this_appartment := one_appartment.bldg;&lt;br /&gt;
 12      dbms_output.put_line(this_appartment.BldgName || &amp;quot; is located in &amp;quot;&lt;br /&gt;
 13                       || this_appartment.BldgAddress.city&lt;br /&gt;
 14                       || &amp;quot; &amp;quot; || this_appartment.BldgAddress.state_abbr);&lt;br /&gt;
 15    END LOOP;&lt;br /&gt;
 16&lt;br /&gt;
 17    COMMIT;&lt;br /&gt;
 18  END;&lt;br /&gt;
 19  /&lt;br /&gt;
Headquarters appartment is located in Detroit MI&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 appartments;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop type appartment;&lt;br /&gt;
Type 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;
==Cursor of user-defined objects==&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 MyTable (&lt;br /&gt;
  2    f1 NUMBER,&lt;br /&gt;
  3    f2 VARCHAR2(50)&lt;br /&gt;
  4  );&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE or replace TYPE objType AS OBJECT (&lt;br /&gt;
  2    f1 NUMBER,&lt;br /&gt;
  3    f2 VARCHAR2(50)&lt;br /&gt;
  4  );&lt;br /&gt;
  5  /&lt;br /&gt;
Type 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 TABLE obj_tab OF objType;&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; DECLARE&lt;br /&gt;
  2&lt;br /&gt;
  3    CURSOR c_AllRows IS&lt;br /&gt;
  4      SELECT * FROM obj_tab;&lt;br /&gt;
  5  BEGIN&lt;br /&gt;
  6    FOR v_Row IN c_AllRows LOOP&lt;br /&gt;
  7      DBMS_OUTPUT.PUT_LINE(v_Row.f1 || &amp;quot; &amp;quot; || v_Row.f2);&lt;br /&gt;
  8    END LOOP;&lt;br /&gt;
  9  END;&lt;br /&gt;
 10  /&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; DROP TABLE obj_tab;&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>