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

	<entry>
		<id>http://sqle.ru/index.php?title=Oracle_PL/SQL/Object_Oriented_Database/Object_Method&amp;diff=2715&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/Object_Method&amp;diff=2715&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/Object_Method&amp;diff=2716&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/Object_Method&amp;diff=2716&amp;oldid=prev"/>
				<updated>2010-05-26T10:02:46Z</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;==Access member variable in member function in a 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&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_used 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_used &amp;lt;= 10 then&lt;br /&gt;
  6        self.vacation_used := self.vacation_used + 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_used - 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; create or replace&lt;br /&gt;
  2  type sales_rep&lt;br /&gt;
  3  under employee(&lt;br /&gt;
  4    salary number,&lt;br /&gt;
  5    commission number,&lt;br /&gt;
  6    overriding member procedure give_raise( p_increase number ),&lt;br /&gt;
  7    member procedure give_commission( p_increase number ),&lt;br /&gt;
  8    overriding member function yearly_compensation return number&lt;br /&gt;
  9  )&lt;br /&gt;
 10  /&lt;br /&gt;
Type created.&lt;br /&gt;
SQL&amp;gt; create or replace&lt;br /&gt;
  2  type body sales_rep as&lt;br /&gt;
  3   overriding member procedure give_raise( p_increase number ) is&lt;br /&gt;
  4   begin&lt;br /&gt;
  5     self.salary := self.salary + (self.salary * (p_increase/100));&lt;br /&gt;
  6   end;&lt;br /&gt;
  7   member procedure give_commission( p_increase number ) is&lt;br /&gt;
  8   begin&lt;br /&gt;
  9     self.rumission := self.rumission + p_increase;&lt;br /&gt;
 10   end;&lt;br /&gt;
 11   overriding member function yearly_compensation return number is&lt;br /&gt;
 12   begin&lt;br /&gt;
 13     return self.salary + self.rumission;&lt;br /&gt;
 14   end;&lt;br /&gt;
 15  end;&lt;br /&gt;
 16  /&lt;br /&gt;
Type body created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop type sales_rep;&lt;br /&gt;
Type dropped.&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;
   &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;
==A sample object type with a MAP member function==&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 TYPE myType AUTHID CURRENT_USER IS OBJECT&lt;br /&gt;
  2  ( my_number NUMBER&lt;br /&gt;
  3  , CONSTRUCTOR FUNCTION myType RETURN SELF AS RESULT&lt;br /&gt;
  4  , CONSTRUCTOR FUNCTION myType( my_number NUMBER )RETURN SELF AS RESULT&lt;br /&gt;
  5  , MEMBER PROCEDURE print_instance_variable&lt;br /&gt;
  6  , MAP MEMBER FUNCTION equals RETURN NUMBER )INSTANTIABLE NOT FINAL;&lt;br /&gt;
  7  /&lt;br /&gt;
Type created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE TYPE BODY myType AS&lt;br /&gt;
  2    CONSTRUCTOR FUNCTION myType&lt;br /&gt;
  3    RETURN SELF AS RESULT IS&lt;br /&gt;
  4      my_instance_number NUMBER := 0;&lt;br /&gt;
  5    BEGIN&lt;br /&gt;
  6      SELF.my_number := my_instance_number;&lt;br /&gt;
  7      RETURN;&lt;br /&gt;
  8    END;&lt;br /&gt;
  9    CONSTRUCTOR FUNCTION myType( my_number NUMBER )&lt;br /&gt;
 10    RETURN SELF AS RESULT IS&lt;br /&gt;
 11    BEGIN&lt;br /&gt;
 12      SELF.my_number := my_number;&lt;br /&gt;
 13      RETURN;&lt;br /&gt;
 14    END;&lt;br /&gt;
 15    MEMBER PROCEDURE print_instance_variable IS&lt;br /&gt;
 16    BEGIN&lt;br /&gt;
 17      DBMS_OUTPUT.PUT_LINE(&amp;quot;Instance Variable [&amp;quot;||SELF.my_number||&amp;quot;]&amp;quot;);&lt;br /&gt;
 18    END;&lt;br /&gt;
 19    MAP MEMBER FUNCTION equals&lt;br /&gt;
 20    RETURN NUMBER IS&lt;br /&gt;
 21    BEGIN&lt;br /&gt;
 22      RETURN SELF.my_number;&lt;br /&gt;
 23&lt;br /&gt;
 24    END;&lt;br /&gt;
 25&lt;br /&gt;
 26  END;&lt;br /&gt;
 27  /&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    obj1 myType := myType;&lt;br /&gt;
  3    obj2 myType := myType(1);&lt;br /&gt;
  4&lt;br /&gt;
  5  BEGIN&lt;br /&gt;
  6    obj1.print_instance_variable;&lt;br /&gt;
  7&lt;br /&gt;
  8    obj2.print_instance_variable;&lt;br /&gt;
  9&lt;br /&gt;
 10    IF obj1 = obj2 THEN&lt;br /&gt;
 11      DBMS_OUTPUT.PUT_LINE(&amp;quot;equal.&amp;quot;);&lt;br /&gt;
 12    ELSE&lt;br /&gt;
 13      DBMS_OUTPUT.PUT_LINE(&amp;quot;unequal.&amp;quot;);&lt;br /&gt;
 14    END IF;&lt;br /&gt;
 15&lt;br /&gt;
 16  END;&lt;br /&gt;
 17  /&lt;br /&gt;
Instance Variable [0]&lt;br /&gt;
Instance Variable [1]&lt;br /&gt;
unequal.&lt;br /&gt;
PL/SQL procedure successfully completed.&lt;br /&gt;
   &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;
==A sample object type with an ORDER member function.==&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;&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE TYPE myType AUTHID CURRENT_USER IS OBJECT&lt;br /&gt;
  2  ( my_number NUMBER&lt;br /&gt;
  3  , my_name   VARCHAR2(20 CHAR)&lt;br /&gt;
  4  , CONSTRUCTOR FUNCTION myType RETURN SELF AS RESULT&lt;br /&gt;
  5  , CONSTRUCTOR FUNCTION myType ( my_number NUMBER, my_name   VARCHAR2 )RETURN SELF AS RESULT&lt;br /&gt;
  6  , MEMBER PROCEDURE print_instance_variable&lt;br /&gt;
  7  , ORDER MEMBER FUNCTION equals( my_class myType ) RETURN NUMBER )INSTANTIABLE NOT FINAL;&lt;br /&gt;
  8  /&lt;br /&gt;
Type created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE TYPE BODY myType AS&lt;br /&gt;
  2    CONSTRUCTOR FUNCTION myType&lt;br /&gt;
  3    RETURN SELF AS RESULT IS&lt;br /&gt;
  4      my_instance_number NUMBER := 0;&lt;br /&gt;
  5      my_instance_name   VARCHAR2(20 CHAR) := &amp;quot;&amp;quot;;&lt;br /&gt;
  6&lt;br /&gt;
  7    BEGIN&lt;br /&gt;
  8      SELF.my_number := my_instance_number;&lt;br /&gt;
  9      SELF.my_name := my_instance_name;&lt;br /&gt;
 10      RETURN;&lt;br /&gt;
 11&lt;br /&gt;
 12    END;&lt;br /&gt;
 13&lt;br /&gt;
 14    CONSTRUCTOR FUNCTION myType( my_number NUMBER , my_name   VARCHAR2 )&lt;br /&gt;
 15    RETURN SELF AS RESULT IS&lt;br /&gt;
 16    BEGIN&lt;br /&gt;
 17      SELF.my_number := my_number;&lt;br /&gt;
 18      SELF.my_name := my_name;&lt;br /&gt;
 19      RETURN;&lt;br /&gt;
 20    END;&lt;br /&gt;
 21&lt;br /&gt;
 22    MEMBER PROCEDURE print_instance_variable IS&lt;br /&gt;
 23    BEGIN&lt;br /&gt;
 24      DBMS_OUTPUT.PUT_LINE(&amp;quot;Number:&amp;quot;||SELF.my_number);&lt;br /&gt;
 25      DBMS_OUTPUT.PUT_LINE(&amp;quot;Name  :&amp;quot;||SELF.my_name);&lt;br /&gt;
 26    END;&lt;br /&gt;
 27    ORDER MEMBER FUNCTION equals( my_class myType )RETURN NUMBER IS&lt;br /&gt;
 28      false_value NUMBER := 0;&lt;br /&gt;
 29      true_value  NUMBER := 1;&lt;br /&gt;
 30    BEGIN&lt;br /&gt;
 31      IF SELF.my_number = my_class.my_number AND SELF.my_name = my_class.my_name THEN&lt;br /&gt;
 32        RETURN true_value;&lt;br /&gt;
 33      ELSE&lt;br /&gt;
 34        RETURN false_value;&lt;br /&gt;
 35      END IF;&lt;br /&gt;
 36    END;&lt;br /&gt;
 37  END;&lt;br /&gt;
 38  /&lt;br /&gt;
Type body created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; DECLARE&lt;br /&gt;
  2    obj1 myType := myType;&lt;br /&gt;
  3    obj2 myType := myType(1,&amp;quot;My Object&amp;quot;);&lt;br /&gt;
  4&lt;br /&gt;
  5  BEGIN&lt;br /&gt;
  6    obj1.print_instance_variable;&lt;br /&gt;
  7&lt;br /&gt;
  8    obj2.print_instance_variable;&lt;br /&gt;
  9&lt;br /&gt;
 10    IF obj1.equals(obj2) = 1 THEN&lt;br /&gt;
 11      DBMS_OUTPUT.PUT_LINE(&amp;quot;equal.&amp;quot;);&lt;br /&gt;
 12    ELSE&lt;br /&gt;
 13      DBMS_OUTPUT.PUT_LINE(&amp;quot;unequal.&amp;quot;);&lt;br /&gt;
 14    END IF;&lt;br /&gt;
 15&lt;br /&gt;
 16  END;&lt;br /&gt;
 17  /&lt;br /&gt;
Number:0&lt;br /&gt;
Name  :&lt;br /&gt;
Number:1&lt;br /&gt;
Name  :My Object&lt;br /&gt;
unequal.&lt;br /&gt;
PL/SQL procedure successfully completed.&lt;br /&gt;
   &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;
==Compare two type object instances==&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;
&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE TYPE empName AUTHID CURRENT_USER IS OBJECT&lt;br /&gt;
  2   ( fname VARCHAR2(20 CHAR)&lt;br /&gt;
  3   , lname  VARCHAR2(20 CHAR)&lt;br /&gt;
  4   , CONSTRUCTOR FUNCTION empName RETURN SELF AS RESULT&lt;br /&gt;
  5   , CONSTRUCTOR FUNCTION empName ( fname VARCHAR2, lname  VARCHAR2 )RETURN SELF AS RESULT&lt;br /&gt;
  6   , MEMBER PROCEDURE print_instance_variable&lt;br /&gt;
  7   , ORDER MEMBER FUNCTION equals( my_class empName ) RETURN NUMBER )&lt;br /&gt;
  8   INSTANTIABLE NOT FINAL;&lt;br /&gt;
  9   /&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 OR REPLACE TYPE BODY empName AS&lt;br /&gt;
  2     CONSTRUCTOR FUNCTION empName RETURN SELF AS RESULT IS&lt;br /&gt;
  3       fname VARCHAR2(20 CHAR) := NULL;&lt;br /&gt;
  4       lname  VARCHAR2(20 CHAR) := NULL;&lt;br /&gt;
  5     BEGIN&lt;br /&gt;
  6       SELF.fname := fname;&lt;br /&gt;
  7       SELF.lname := lname;&lt;br /&gt;
  8       RETURN;&lt;br /&gt;
  9     END;&lt;br /&gt;
 10     CONSTRUCTOR FUNCTION empName(fname VARCHAR2, lname VARCHAR2)RETURN SELF AS RESULT IS&lt;br /&gt;
 11     BEGIN&lt;br /&gt;
 12       SELF.fname := fname;&lt;br /&gt;
 13       SELF.lname := lname;&lt;br /&gt;
 14        RETURN;&lt;br /&gt;
 15     END;&lt;br /&gt;
 16     MEMBER PROCEDURE print_instance_variable IS&lt;br /&gt;
 17     BEGIN&lt;br /&gt;
 18       DBMS_OUTPUT.PUT_LINE(&amp;quot;Name [&amp;quot;||SELF.fname||&amp;quot;, &amp;quot;||SELF.lname||&amp;quot;]&amp;quot;);&lt;br /&gt;
 19     END;&lt;br /&gt;
 20&lt;br /&gt;
 21     ORDER MEMBER FUNCTION equals( my_class empName )RETURN NUMBER IS&lt;br /&gt;
 22        false_value NUMBER := 0;&lt;br /&gt;
 23       true_value  NUMBER := 1;&lt;br /&gt;
 24      BEGIN&lt;br /&gt;
 25       IF SELF.fname = my_class.fname AND SELF.lname = my_class.lname   THEN&lt;br /&gt;
 26         RETURN true_value;&lt;br /&gt;
 27       ELSE&lt;br /&gt;
 28         RETURN false_value;&lt;br /&gt;
 29       END IF;&lt;br /&gt;
 30     END;&lt;br /&gt;
 31   END;&lt;br /&gt;
 32    /&lt;br /&gt;
Type body created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE TYPE empType AUTHID CURRENT_USER IS OBJECT&lt;br /&gt;
  2   ( ename   empName&lt;br /&gt;
  3   , address VARCHAR2(20 CHAR)&lt;br /&gt;
  4   , city           VARCHAR2(14 CHAR)&lt;br /&gt;
  5   , state          VARCHAR2(2 CHAR)&lt;br /&gt;
  6   , postal_code    VARCHAR2(5 CHAR)&lt;br /&gt;
  7   , CONSTRUCTOR FUNCTION empType RETURN SELF AS RESULT&lt;br /&gt;
  8   , CONSTRUCTOR FUNCTION empType(ename empName,address VARCHAR2,city VARCHAR2,state VARCHAR2,postal_code VARCHAR2 )RETURN SELF AS RESULT&lt;br /&gt;
  9   , CONSTRUCTOR FUNCTION empType(fname VARCHAR2, lname VARCHAR2, address VARCHAR2,city VARCHAR2,state VARCHAR2,postal_code VARCHAR2 )RETURN SELF AS RESULT&lt;br /&gt;
 10   , MEMBER PROCEDURE print_instance_variable, ORDER MEMBER FUNCTION equals( my_class empType ) RETURN NUMBER )&lt;br /&gt;
 11   INSTANTIABLE NOT FINAL;&lt;br /&gt;
 12   /&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; CREATE OR REPLACE TYPE BODY empType AS CONSTRUCTOR FUNCTION empType  RETURN SELF AS RESULT IS&lt;br /&gt;
  2       fname     VARCHAR2(20 CHAR) := NULL;&lt;br /&gt;
  3       lname      VARCHAR2(20 CHAR) := NULL;&lt;br /&gt;
  4       address VARCHAR2(20 CHAR) := NULL;&lt;br /&gt;
  5       city           VARCHAR2(14 CHAR) := NULL;&lt;br /&gt;
  6       state          VARCHAR2(2 CHAR)  := NULL;&lt;br /&gt;
  7       postal_code    VARCHAR2(5 CHAR)  := NULL;&lt;br /&gt;
  8     BEGIN&lt;br /&gt;
  9       SELF.ename := empName(fname,lname);&lt;br /&gt;
 10       SELF.address := address;&lt;br /&gt;
 11       SELF.city := city;&lt;br /&gt;
 12       SELF.state := state;&lt;br /&gt;
 13       SELF.postal_code := postal_code;&lt;br /&gt;
 14        RETURN;&lt;br /&gt;
 15     END;&lt;br /&gt;
 16     CONSTRUCTOR FUNCTION empType(ename empName, address VARCHAR2, city VARCHAR2, state VARCHAR2, postal_code VARCHAR2 )&lt;br /&gt;
 17     RETURN SELF AS RESULT IS&lt;br /&gt;
 18     BEGIN&lt;br /&gt;
 19       SELF.ename := ename;&lt;br /&gt;
 20       SELF.address := address;&lt;br /&gt;
 21       SELF.city := city;&lt;br /&gt;
 22        SELF.state := state;&lt;br /&gt;
 23       SELF.postal_code := postal_code;&lt;br /&gt;
 24        RETURN;&lt;br /&gt;
 25&lt;br /&gt;
 26     END;&lt;br /&gt;
 27&lt;br /&gt;
 28     CONSTRUCTOR FUNCTION empType(fname VARCHAR2,lname VARCHAR2,address VARCHAR2,city VARCHAR2,state VARCHAR2,postal_code VARCHAR2 )&lt;br /&gt;
 29     RETURN SELF AS RESULT IS&lt;br /&gt;
 30     BEGIN&lt;br /&gt;
 31       SELF.ename := empName(fname,lname);&lt;br /&gt;
 32        SELF.address := address;&lt;br /&gt;
 33       SELF.city := city;&lt;br /&gt;
 34        SELF.state := state;&lt;br /&gt;
 35       SELF.postal_code := postal_code;&lt;br /&gt;
 36       RETURN;&lt;br /&gt;
 37&lt;br /&gt;
 38     END;&lt;br /&gt;
 39     MEMBER PROCEDURE print_instance_variable IS&lt;br /&gt;
 40      BEGIN&lt;br /&gt;
 41        SELF.ename.print_instance_variable;&lt;br /&gt;
 42        DBMS_OUTPUT.PUT_LINE(&amp;quot;First Name    : &amp;quot;||SELF.ename.fname);&lt;br /&gt;
 43        DBMS_OUTPUT.PUT_LINE(&amp;quot;Last Name     : &amp;quot;||SELF.ename.lname);&lt;br /&gt;
 44        DBMS_OUTPUT.PUT_LINE(&amp;quot;Street Address: &amp;quot;||SELF.address);&lt;br /&gt;
 45       DBMS_OUTPUT.PUT_LINE(&amp;quot;City          : &amp;quot;||SELF.city);&lt;br /&gt;
 46       DBMS_OUTPUT.PUT_LINE(&amp;quot;State         : &amp;quot;||SELF.state);&lt;br /&gt;
 47       DBMS_OUTPUT.PUT_LINE(&amp;quot;Postal Code   : &amp;quot;||SELF.postal_code);&lt;br /&gt;
 48&lt;br /&gt;
 49     END;&lt;br /&gt;
 50&lt;br /&gt;
 51     ORDER MEMBER FUNCTION equals( my_class empType)RETURN NUMBER IS&lt;br /&gt;
 52       false_value NUMBER := 0;&lt;br /&gt;
 53       true_value  NUMBER := 1;&lt;br /&gt;
 54     BEGIN&lt;br /&gt;
 55       IF SELF.ename.equals(my_class.ename) = true_value AND SELF.address = my_class.address AND SELF.city = my_class.city AND SELF.state = my_class.state AND&lt;br /&gt;
 56          SELF.postal_code = my_class.postal_code THEN&lt;br /&gt;
 57         RETURN true_value;&lt;br /&gt;
 58       ELSE&lt;br /&gt;
 59         RETURN false_value;&lt;br /&gt;
 60&lt;br /&gt;
 61       END IF;&lt;br /&gt;
 62&lt;br /&gt;
 63     END;&lt;br /&gt;
 64&lt;br /&gt;
 65   END;&lt;br /&gt;
 66   /&lt;br /&gt;
Type body 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     obj1 empType := empType(&amp;quot;A&amp;quot;,&amp;quot;B&amp;quot;,&amp;quot;1 str&amp;quot;,&amp;quot;CA&amp;quot;,&amp;quot;E&amp;quot;,&amp;quot;111&amp;quot;);&lt;br /&gt;
  3     obj2 empType := empType(empName(&amp;quot;A&amp;quot;,&amp;quot;B&amp;quot;),&amp;quot;1 rd&amp;quot;,&amp;quot;city&amp;quot;,&amp;quot;TX&amp;quot;,&amp;quot;222&amp;quot;);&lt;br /&gt;
  4   BEGIN&lt;br /&gt;
  5     obj1.print_instance_variable;&lt;br /&gt;
  6&lt;br /&gt;
  7     obj2.print_instance_variable;&lt;br /&gt;
  8&lt;br /&gt;
  9     IF obj1.equals(obj2) = 1 THEN&lt;br /&gt;
 10       DBMS_OUTPUT.PUT_LINE(&amp;quot;equal.&amp;quot;);&lt;br /&gt;
 11     ELSE&lt;br /&gt;
 12       DBMS_OUTPUT.PUT_LINE(&amp;quot;unequal.&amp;quot;);&lt;br /&gt;
 13     END IF;&lt;br /&gt;
 14    END;&lt;br /&gt;
 15   /&lt;br /&gt;
Name [A, B]&lt;br /&gt;
First Name    : A&lt;br /&gt;
Last Name     : B&lt;br /&gt;
Street Address: 1 str&lt;br /&gt;
City          : CA&lt;br /&gt;
State         : E&lt;br /&gt;
Postal Code   : 111&lt;br /&gt;
Name [A, B]&lt;br /&gt;
First Name    : A&lt;br /&gt;
Last Name     : B&lt;br /&gt;
Street Address: 1 rd&lt;br /&gt;
City          : city&lt;br /&gt;
State         : TX&lt;br /&gt;
Postal Code   : 222&lt;br /&gt;
unequal.&lt;br /&gt;
PL/SQL procedure successfully completed.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
   &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;
==Creating User-defined Functions for Column 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;
&lt;br /&gt;
SQL&amp;gt; -- Creating User-defined Functions for Column Objects&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE TYPE aobj AS object (&lt;br /&gt;
  2                    state CHAR(2),&lt;br /&gt;
  3                    amt NUMBER(5),&lt;br /&gt;
  4&lt;br /&gt;
  5                    MEMBER FUNCTION mult (times in number) RETURN number,&lt;br /&gt;
  6                    PRAGMA RESTRICT_REFERENCES(mult, WNDS));&lt;br /&gt;
  7  /&lt;br /&gt;
Type created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE TYPE BODY aobj AS&lt;br /&gt;
  2    MEMBER FUNCTION mult (times in number) RETURN number&lt;br /&gt;
  3    IS&lt;br /&gt;
  4    BEGIN&lt;br /&gt;
  5      RETURN times * self.amt; /* SEE BELOW */&lt;br /&gt;
  6    END;&lt;br /&gt;
  7  END;&lt;br /&gt;
  8  /&lt;br /&gt;
Type body created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE TABLE aobjtable (arow aobj);&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; DESC aobjtable;&lt;br /&gt;
 Name                                                                                                  Null?    Type&lt;br /&gt;
 ----------------------------------------------------------------------------------------------------- -------- --------------------------------------------------------------------&lt;br /&gt;
 AROW                                                                                                   AOBJ&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table aobjtable;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
           &lt;br /&gt;
         &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;
==Demonstrates the member method.==&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 BookType AS OBJECT (&lt;br /&gt;
  2     rebate   NUMBER (10, 4),&lt;br /&gt;
  3     price           NUMBER (10, 2),&lt;br /&gt;
  4     MEMBER FUNCTION discount_price&lt;br /&gt;
  5        RETURN NUMBER&lt;br /&gt;
  6  )&lt;br /&gt;
  7  INSTANTIABLE FINAL;&lt;br /&gt;
  8  /&lt;br /&gt;
Type created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE TYPE BODY BookType&lt;br /&gt;
  2  AS&lt;br /&gt;
  3     MEMBER FUNCTION discount_price&lt;br /&gt;
  4        RETURN NUMBER&lt;br /&gt;
  5     IS&lt;br /&gt;
  6     BEGIN&lt;br /&gt;
  7        RETURN (SELF.price * (1 - SELF.rebate));&lt;br /&gt;
  8     END discount_price;&lt;br /&gt;
  9  END;&lt;br /&gt;
 10  /&lt;br /&gt;
Type body created.&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      v_price BookType := BookType(.1, 75.00);&lt;br /&gt;
  3   BEGIN&lt;br /&gt;
  4      dbms_output.put_line(v_price.discount_price);&lt;br /&gt;
  5   END;&lt;br /&gt;
  6   /&lt;br /&gt;
67.5&lt;br /&gt;
PL/SQL procedure successfully completed.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &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;
==This script builds a sample object type with member variables and functions==&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 TYPE myType AUTHID CURRENT_USER IS OBJECT&lt;br /&gt;
  2  ( fname VARCHAR2(20 CHAR)&lt;br /&gt;
  3  , lname  VARCHAR2(20 CHAR)&lt;br /&gt;
  4  , CONSTRUCTOR FUNCTION myType RETURN SELF AS RESULT&lt;br /&gt;
  5  , CONSTRUCTOR FUNCTION myType ( fname VARCHAR2, lname  VARCHAR2 )RETURN SELF AS RESULT&lt;br /&gt;
  6  , MEMBER PROCEDURE print_instance_variable&lt;br /&gt;
  7  , ORDER MEMBER FUNCTION equals( my_class myType ) RETURN NUMBER )&lt;br /&gt;
  8  INSTANTIABLE NOT FINAL;&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 myType AS&lt;br /&gt;
  2    CONSTRUCTOR FUNCTION myType RETURN SELF AS RESULT IS&lt;br /&gt;
  3      fname VARCHAR2(20 CHAR) := NULL;&lt;br /&gt;
  4      lname  VARCHAR2(20 CHAR) := NULL;&lt;br /&gt;
  5    BEGIN&lt;br /&gt;
  6      SELF.fname := fname;&lt;br /&gt;
  7      SELF.lname := lname;&lt;br /&gt;
  8      RETURN;&lt;br /&gt;
  9    END;&lt;br /&gt;
 10    CONSTRUCTOR FUNCTION myType(fname VARCHAR2, lname VARCHAR2)RETURN SELF AS RESULT IS&lt;br /&gt;
 11    BEGIN&lt;br /&gt;
 12      SELF.fname := fname;&lt;br /&gt;
 13      SELF.lname := lname;&lt;br /&gt;
 14      RETURN;&lt;br /&gt;
 15    END;&lt;br /&gt;
 16    MEMBER PROCEDURE print_instance_variable IS&lt;br /&gt;
 17    BEGIN&lt;br /&gt;
 18      DBMS_OUTPUT.PUT_LINE(&amp;quot;Name [&amp;quot;||SELF.fname||&amp;quot;, &amp;quot;||SELF.lname||&amp;quot;]&amp;quot;);&lt;br /&gt;
 19    END;&lt;br /&gt;
 20&lt;br /&gt;
 21    ORDER MEMBER FUNCTION equals( my_class myType )RETURN NUMBER IS&lt;br /&gt;
 22      false_value NUMBER := 0;&lt;br /&gt;
 23      true_value  NUMBER := 1;&lt;br /&gt;
 24    BEGIN&lt;br /&gt;
 25      IF SELF.fname = my_class.fname AND SELF.lname = my_class.lname   THEN&lt;br /&gt;
 26        RETURN true_value;&lt;br /&gt;
 27      ELSE&lt;br /&gt;
 28        RETURN false_value;&lt;br /&gt;
 29      END IF;&lt;br /&gt;
 30    END;&lt;br /&gt;
 31  END;&lt;br /&gt;
 32  /&lt;br /&gt;
Type body created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; DECLARE&lt;br /&gt;
  2    obj1 myType := myType;&lt;br /&gt;
  3    obj2 myType := myType(&amp;quot;A&amp;quot;,&amp;quot;B&amp;quot;);&lt;br /&gt;
  4  BEGIN&lt;br /&gt;
  5&lt;br /&gt;
  6    obj1.print_instance_variable;&lt;br /&gt;
  7&lt;br /&gt;
  8    obj2.print_instance_variable;&lt;br /&gt;
  9&lt;br /&gt;
 10    IF obj1.equals(obj2) = 1 THEN&lt;br /&gt;
 11      DBMS_OUTPUT.PUT_LINE(&amp;quot;equal.&amp;quot;);&lt;br /&gt;
 12    ELSE&lt;br /&gt;
 13      DBMS_OUTPUT.PUT_LINE(&amp;quot;unequal.&amp;quot;);&lt;br /&gt;
 14    END IF;&lt;br /&gt;
 15  END;&lt;br /&gt;
 16  /&lt;br /&gt;
Name [, ]&lt;br /&gt;
Name [A, B]&lt;br /&gt;
unequal.&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;
   &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;
==This script demonstrates the order method.==&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; CREATE OR REPLACE TYPE book_obj AS OBJECT (&lt;br /&gt;
  2     isbn        CHAR (10),&lt;br /&gt;
  3     title       VARCHAR2 (100),&lt;br /&gt;
  4     num_pages   NUMBER,&lt;br /&gt;
  5     ORDER MEMBER FUNCTION compare_book (p_isbn IN BOOK_OBJ)&lt;br /&gt;
  6        RETURN NUMBER&lt;br /&gt;
  7  );&lt;br /&gt;
  8  /&lt;br /&gt;
Type created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE TYPE BODY book_obj&lt;br /&gt;
  2  AS&lt;br /&gt;
  3     ORDER MEMBER FUNCTION compare_book (p_isbn IN BOOK_OBJ)&lt;br /&gt;
  4        RETURN NUMBER&lt;br /&gt;
  5     IS&lt;br /&gt;
  6     BEGIN&lt;br /&gt;
  7        IF p_isbn.isbn &amp;lt; SELF.isbn&lt;br /&gt;
  8        THEN&lt;br /&gt;
  9           RETURN 1;&lt;br /&gt;
 10        ELSIF p_isbn.isbn &amp;gt; SELF.isbn&lt;br /&gt;
 11        THEN&lt;br /&gt;
 12           RETURN -1;&lt;br /&gt;
 13        ELSE&lt;br /&gt;
 14           RETURN 0;&lt;br /&gt;
 15        END IF;&lt;br /&gt;
 16     END compare_book;&lt;br /&gt;
 17  END;&lt;br /&gt;
 18  /&lt;br /&gt;
Type body created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
   &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;
==This script demonstrates the static method.==&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 SERVEROUTPUT ON SIZE 1000000&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE TYPE PriceType AS OBJECT (&lt;br /&gt;
  2     discount_rate   NUMBER (10, 4),&lt;br /&gt;
  3     price           NUMBER (10, 2),&lt;br /&gt;
  4     STATIC FUNCTION new_price (p_price IN NUMBER,rebate IN NUMBER DEFAULT .1)&lt;br /&gt;
  5        RETURN NUMBER&lt;br /&gt;
  6  )&lt;br /&gt;
  7  INSTANTIABLE FINAL;&lt;br /&gt;
  8  /&lt;br /&gt;
Type created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE TYPE BODY PriceType&lt;br /&gt;
  2  AS&lt;br /&gt;
  3     STATIC FUNCTION new_price(p_price IN NUMBER,rebate IN NUMBER DEFAULT .1)&lt;br /&gt;
  4        RETURN NUMBER&lt;br /&gt;
  5     IS&lt;br /&gt;
  6     BEGIN&lt;br /&gt;
  7        RETURN (p_price * (1 - rebate));&lt;br /&gt;
  8     END new_price;&lt;br /&gt;
  9  END;&lt;br /&gt;
 10  /&lt;br /&gt;
Type body created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; -- exec DBMS_OUTPUT.PUT_LINE(PriceType.new_price(75));&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
   &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;
==Type with member procedure==&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         VARCHAR2(10) NOT NULL,&lt;br /&gt;
  3      course     VARCHAR2(10),&lt;br /&gt;
  4      year       VARCHAR2(4),&lt;br /&gt;
  5      PRIMARY KEY (id));&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE TYPE empType AS OBJECT&lt;br /&gt;
  2     (id                     VARCHAR2(10),&lt;br /&gt;
  3      course                 VARCHAR2(20),&lt;br /&gt;
  4      year                   VARCHAR2(4),&lt;br /&gt;
  5      MEMBER PROCEDURE       Delete_emp )&lt;br /&gt;
  6  /&lt;br /&gt;
Type created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE TYPE BODY empType AS&lt;br /&gt;
  2     MEMBER PROCEDURE&lt;br /&gt;
  3     Delete_emp IS&lt;br /&gt;
  4     BEGIN&lt;br /&gt;
  5           DELETE FROM emp&lt;br /&gt;
  6           WHERE emp.id = self.id;&lt;br /&gt;
  7     END Delete_emp;&lt;br /&gt;
  8  END;&lt;br /&gt;
  9  /&lt;br /&gt;
Type body created.&lt;br /&gt;
SQL&amp;gt; drop table emp;&lt;br /&gt;
Table dropped.&lt;br /&gt;
   &lt;br /&gt;
    &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;
==Use method from object in select command==&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;
&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE TYPE aobj AS object (&lt;br /&gt;
  2                    state CHAR(2),&lt;br /&gt;
  3                    amt NUMBER(5),&lt;br /&gt;
  4&lt;br /&gt;
  5                    MEMBER FUNCTION mult (times in number) RETURN number,&lt;br /&gt;
  6                    PRAGMA RESTRICT_REFERENCES(mult, WNDS));&lt;br /&gt;
  7  /&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 aobj AS&lt;br /&gt;
  2    MEMBER FUNCTION mult (times in number) RETURN number&lt;br /&gt;
  3    IS&lt;br /&gt;
  4    BEGIN&lt;br /&gt;
  5      RETURN times * self.amt; /* SEE BELOW */&lt;br /&gt;
  6    END;&lt;br /&gt;
  7  END;&lt;br /&gt;
  8  /&lt;br /&gt;
Type body created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE TABLE aobjtable (arow aobj);&lt;br /&gt;
Table 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; INSERT INTO aobjtable VALUES (aobj(&amp;quot;FL&amp;quot;,25));&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO aobjtable VALUES (aobj(&amp;quot;AL&amp;quot;,35));&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO aobjtable VALUES (aobj(&amp;quot;OH&amp;quot;,15));&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; select * from aobjtable;&lt;br /&gt;
AROW(STATE, AMT)&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
AOBJ(&amp;quot;FL&amp;quot;, 25)&lt;br /&gt;
AOBJ(&amp;quot;AL&amp;quot;, 35)&lt;br /&gt;
AOBJ(&amp;quot;OH&amp;quot;, 15)&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; DESC aobjtable;&lt;br /&gt;
 Name                                                                                                  Null?    Type&lt;br /&gt;
 ----------------------------------------------------------------------------------------------------- -------- --------------------------------------------------------------------&lt;br /&gt;
 AROW                                                                                                   AOBJ&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table aobjtable;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
           &lt;br /&gt;
         &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>