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

	<entry>
		<id>http://www.sqle.ru/index.php?title=Oracle_PL/SQL/Object_Oriented_Database/Comparable&amp;diff=2671&amp;oldid=prev</id>
		<title> в 13:45, 26 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://www.sqle.ru/index.php?title=Oracle_PL/SQL/Object_Oriented_Database/Comparable&amp;diff=2671&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://www.sqle.ru/index.php?title=Oracle_PL/SQL/Object_Oriented_Database/Comparable&amp;diff=2672&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://www.sqle.ru/index.php?title=Oracle_PL/SQL/Object_Oriented_Database/Comparable&amp;diff=2672&amp;oldid=prev"/>
				<updated>2010-05-26T10:02:37Z</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;==Compare the appartment objects and display the results==&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; set echo on&lt;br /&gt;
SQL&amp;gt; set serveroutput on&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; 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 (SELF IN OUT appartment,NewMgr IN INTEGER),&lt;br /&gt;
  6    ORDER MEMBER FUNCTION Compare (SELF IN appartment,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(SELF IN OUT appartment, NewMgr IN INTEGER) IS&lt;br /&gt;
  3      BEGIN&lt;br /&gt;
  4        SELF.BldgMgr := NewMgr;&lt;br /&gt;
  5      END;&lt;br /&gt;
  6&lt;br /&gt;
  7    ORDER MEMBER FUNCTION Compare (SELF IN appartment,&lt;br /&gt;
  8                                   Otherappartment IN appartment)&lt;br /&gt;
  9    RETURN INTEGER IS&lt;br /&gt;
 10        BldgName1     VARCHAR2(40);&lt;br /&gt;
 11        BldgName2     VARCHAR2(40);&lt;br /&gt;
 12      BEGIN&lt;br /&gt;
 13        BldgName1 := upper(ltrim(rtrim(SELF.BldgName)));&lt;br /&gt;
 14        BldgName2 := upper(ltrim(rtrim(Otherappartment.BldgName)));&lt;br /&gt;
 15&lt;br /&gt;
 16        IF BldgName1 = BldgName2 THEN&lt;br /&gt;
 17          RETURN 0;&lt;br /&gt;
 18        ELSIF BldgName1 &amp;lt; BldgName2 THEN&lt;br /&gt;
 19          RETURN -1;&lt;br /&gt;
 20        ELSE&lt;br /&gt;
 21          RETURN 1;&lt;br /&gt;
 22        END IF;&lt;br /&gt;
 23      END;&lt;br /&gt;
 24  END;&lt;br /&gt;
 25  /&lt;br /&gt;
Type body created.&lt;br /&gt;
SQL&amp;gt; DECLARE&lt;br /&gt;
  2    appA      appartment;   &lt;br /&gt;
  3    appB      appartment;&lt;br /&gt;
  4    appB2     appartment;&lt;br /&gt;
  5    appC      appartment;&lt;br /&gt;
  6  BEGIN&lt;br /&gt;
  7    &lt;br /&gt;
  8    appA := appartment(&amp;quot;An appartment&amp;quot;,null,null);&lt;br /&gt;
  9    appB := appartment(&amp;quot;Another appartment&amp;quot;,null,null);&lt;br /&gt;
 10    appB2 := appartment(&amp;quot;Another appartment&amp;quot;,null,null);&lt;br /&gt;
 11    appC := appartment(&amp;quot;Cosmotology Research Lab&amp;quot;,null,null);&lt;br /&gt;
 12&lt;br /&gt;
 13    IF appA &amp;lt; appB THEN&lt;br /&gt;
 14      dbms_output.put_line(&amp;quot;appA &amp;lt; appB&amp;quot;);&lt;br /&gt;
 15    END IF;&lt;br /&gt;
 16&lt;br /&gt;
 17    &lt;br /&gt;
 18    IF appB = appB2 THEN&lt;br /&gt;
 19      dbms_output.put_line(&amp;quot;appB = appB2&amp;quot;);&lt;br /&gt;
 20    END IF;&lt;br /&gt;
 21&lt;br /&gt;
 22    IF appC &amp;gt; appB2 THEN&lt;br /&gt;
 23      dbms_output.put_line(&amp;quot;appC &amp;gt; appB2&amp;quot;);&lt;br /&gt;
 24    END IF;&lt;br /&gt;
 25  END;&lt;br /&gt;
 26  /&lt;br /&gt;
appA &amp;lt; appB&lt;br /&gt;
appB = appB2&lt;br /&gt;
appC &amp;gt; appB2&lt;br /&gt;
PL/SQL procedure successfully completed.&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;
==Compare user-defined 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; create or replace&lt;br /&gt;
  2  type person as object(&lt;br /&gt;
  3   first_name varchar2(100),&lt;br /&gt;
  4   last_name varchar2(100) )&lt;br /&gt;
  5  /&lt;br /&gt;
Type created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; alter type person&lt;br /&gt;
  2  add attribute dob date&lt;br /&gt;
  3  cascade not including table data&lt;br /&gt;
  4  /&lt;br /&gt;
Type altered.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; create or replace&lt;br /&gt;
  2  type employee as object(&lt;br /&gt;
  3   name person,&lt;br /&gt;
  4   empno number,&lt;br /&gt;
  5   hiredate date,&lt;br /&gt;
  6   sal number,&lt;br /&gt;
  7   commission number,&lt;br /&gt;
  8   order member function match ( p_employee employee ) return integer )&lt;br /&gt;
  9  /&lt;br /&gt;
Type created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; create or replace&lt;br /&gt;
  2  type body employee as&lt;br /&gt;
  3   order member function match ( p_employee employee ) return integer is&lt;br /&gt;
  4   begin&lt;br /&gt;
  5    if self.empno &amp;gt; p_employee.empno then&lt;br /&gt;
  6      return 1;&lt;br /&gt;
  7    elsif self.empno &amp;lt; p_employee.empno then&lt;br /&gt;
  8      return -1;&lt;br /&gt;
  9    else&lt;br /&gt;
 10      return 0;&lt;br /&gt;
 11    end if;&lt;br /&gt;
 12   end;&lt;br /&gt;
 13  end;&lt;br /&gt;
 14  /&lt;br /&gt;
Type body created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; declare&lt;br /&gt;
  2   emp1 employee;&lt;br /&gt;
  3   emp2 employee;&lt;br /&gt;
  4  begin&lt;br /&gt;
  5   emp1 := employee( null, 12345, &amp;quot;01-JAN-01&amp;quot;, 100, 100 );&lt;br /&gt;
  6   emp2 := employee( null, 67890, &amp;quot;01-JAN-01&amp;quot;, 100, 100 );&lt;br /&gt;
  7   if emp1 &amp;gt; emp2 then&lt;br /&gt;
  8     dbms_output.put_line( &amp;quot;Employee 1 is greater&amp;quot; );&lt;br /&gt;
  9   end if;&lt;br /&gt;
 10   if emp1 &amp;lt; emp2 then&lt;br /&gt;
 11     dbms_output.put_line( &amp;quot;Employee 2 is greater&amp;quot; );&lt;br /&gt;
 12   end if;&lt;br /&gt;
 13   if emp1 = emp2 then&lt;br /&gt;
 14     dbms_output.put_line( &amp;quot;Employees are equal&amp;quot; );&lt;br /&gt;
 15   end if;&lt;br /&gt;
 16  end;&lt;br /&gt;
 17  /&lt;br /&gt;
PL/SQL procedure successfully completed.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop type employee;&lt;br /&gt;
Type dropped.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop type person;&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;
==Create user type with order==&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 or replace&lt;br /&gt;
  2  type person as object(&lt;br /&gt;
  3   first_name varchar2(100),&lt;br /&gt;
  4   last_name varchar2(100) )&lt;br /&gt;
  5  /&lt;br /&gt;
Type 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; alter type person&lt;br /&gt;
  2  add attribute dob date&lt;br /&gt;
  3  cascade not including table data&lt;br /&gt;
  4  /&lt;br /&gt;
Type altered.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; create or replace&lt;br /&gt;
  2  type employee as object(&lt;br /&gt;
  3   name person,&lt;br /&gt;
  4   empno number,&lt;br /&gt;
  5   hiredate date,&lt;br /&gt;
  6   sal number,&lt;br /&gt;
  7   commission number,&lt;br /&gt;
  8   order member function match ( p_employee employee ) return integer )&lt;br /&gt;
  9  /&lt;br /&gt;
Type created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; create or replace&lt;br /&gt;
  2  type body employee as&lt;br /&gt;
  3   order member function match ( p_employee employee ) return integer is&lt;br /&gt;
  4   begin&lt;br /&gt;
  5    if self.empno &amp;gt; p_employee.empno then&lt;br /&gt;
  6      return 1;&lt;br /&gt;
  7    elsif self.empno &amp;lt; p_employee.empno then&lt;br /&gt;
  8      return -1;&lt;br /&gt;
  9    else&lt;br /&gt;
 10      return 0;&lt;br /&gt;
 11    end if;&lt;br /&gt;
 12   end;&lt;br /&gt;
 13  end;&lt;br /&gt;
 14  /&lt;br /&gt;
Type body created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop type employee;&lt;br /&gt;
Type dropped.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop type person;&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;
==Define &amp;quot;Compare&amp;quot; method and use it in order by clause==&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; set echo on&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;&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;appartment&amp;quot;,address(&amp;quot;2 Square&amp;quot;,&amp;quot; &amp;quot;,&amp;quot;Lansing&amp;quot;,&amp;quot;MI&amp;quot;,&amp;quot;48823&amp;quot;,&amp;quot; &amp;quot;),597));&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO appartments values (appartment(&amp;quot;East Shed&amp;quot;,address(&amp;quot;1 Rd&amp;quot;,&amp;quot;&amp;quot;,&amp;quot;Lansing&amp;quot;,&amp;quot;MI&amp;quot;,&amp;quot;48823&amp;quot;,&amp;quot;&amp;quot;),598));&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO appartments values (appartment(&amp;quot;Headquarters appartment&amp;quot;,address(&amp;quot;1 Jeff&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;
appartment&lt;br /&gt;
ADDRESS(&amp;quot;2 Square&amp;quot;, &amp;quot; &amp;quot;, &amp;quot;Lansing&amp;quot;, &amp;quot;MI&amp;quot;, &amp;quot;48823&amp;quot;,&lt;br /&gt;
 &amp;quot; &amp;quot;)&lt;br /&gt;
       597&lt;br /&gt;
East Shed&lt;br /&gt;
ADDRESS(&amp;quot;1 Rd&amp;quot;, NULL, &amp;quot;Lansing&amp;quot;, &amp;quot;MI&amp;quot;, &amp;quot;48823&amp;quot;, NU&lt;br /&gt;
LL)&lt;br /&gt;
       598&lt;br /&gt;
Headquarters appartment&lt;br /&gt;
ADDRESS(&amp;quot;1 Jeff&amp;quot;, NULL, &amp;quot;Detroit&amp;quot;, &amp;quot;MI&amp;quot;, &amp;quot;48226&amp;quot;,&lt;br /&gt;
NULL)&lt;br /&gt;
       599&lt;br /&gt;
&lt;br /&gt;
3 rows selected.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; SELECT BldgName FROM appartments order BY BldgName;&lt;br /&gt;
BLDGNAME&lt;br /&gt;
----------------------------------------&lt;br /&gt;
appartment&lt;br /&gt;
East Shed&lt;br /&gt;
Headquarters appartment&lt;br /&gt;
3 rows selected.&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;
 &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Raise error in object memthod==&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&lt;br /&gt;
  2  type employee as object(&lt;br /&gt;
  3    name varchar2(100),&lt;br /&gt;
  4    empno number,&lt;br /&gt;
  5    hiredate date,&lt;br /&gt;
  6    vacation number,&lt;br /&gt;
  7    final member procedure vacation( p_days number ),&lt;br /&gt;
  8    not instantiable member procedure give_raise( p_increase number ),&lt;br /&gt;
  9    not instantiable member function yearly_compensation return number&lt;br /&gt;
 10  )&lt;br /&gt;
 11  not instantiable&lt;br /&gt;
 12  not final&lt;br /&gt;
 13  /&lt;br /&gt;
Type created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; create or replace&lt;br /&gt;
  2  type body employee as&lt;br /&gt;
  3    final member procedure vacation( p_days number ) is&lt;br /&gt;
  4    begin&lt;br /&gt;
  5      if p_days + self.vacation &amp;lt;= 10 then&lt;br /&gt;
  6        self.vacation := self.vacation + p_days;&lt;br /&gt;
  7      else&lt;br /&gt;
  8        raise_application_error(&lt;br /&gt;
  9          -20001,&lt;br /&gt;
 10          &amp;quot;You are &amp;quot; || to_char(p_days + self.vacation - 10) ||&lt;br /&gt;
 11          &amp;quot; days over your vacation limit.&amp;quot; );&lt;br /&gt;
 12      end if;&lt;br /&gt;
 13    end;&lt;br /&gt;
 14  end;&lt;br /&gt;
 15  /&lt;br /&gt;
Type body created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop type employee;&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;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>