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

	<entry>
		<id>http://www.sqle.ru/index.php?title=Oracle_PL/SQL/Object_Oriented_Database/Self&amp;diff=2705&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/Self&amp;diff=2705&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/Self&amp;diff=2706&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/Self&amp;diff=2706&amp;oldid=prev"/>
				<updated>2010-05-26T10:02:43Z</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;==Use self reference==&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 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; -- &amp;quot;self&amp;quot;&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;&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;&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; -- Use the function we created: use the table alias in our SELECT as well as the qualifier, arow:&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; SELECT x.arow.state, x.arow.amt, x.arow.mult(2)&lt;br /&gt;
  2  FROM aobjtable x;&lt;br /&gt;
AR   AROW.AMT X.AROW.MULT(2)&lt;br /&gt;
-- ---------- --------------&lt;br /&gt;
FL         25             50&lt;br /&gt;
AL         35             70&lt;br /&gt;
OH         15             30&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;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Use self to reference member variable==&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) ||&amp;quot; days over your vacation limit.&amp;quot; );&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; create or replace type consultant under employee(&lt;br /&gt;
  2    hourly_rate number,&lt;br /&gt;
  3    overriding member procedure give_raise( p_increase number ),&lt;br /&gt;
  4    overriding member function yearly_compensation return number&lt;br /&gt;
  5  )&lt;br /&gt;
  6  /&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&lt;br /&gt;
  2  type body consultant as&lt;br /&gt;
  3    overriding member procedure give_raise( p_increase number ) is&lt;br /&gt;
  4    begin&lt;br /&gt;
  5      self.hourly_rate := self.hourly_rate + p_increase;&lt;br /&gt;
  6    end;&lt;br /&gt;
  7    overriding member function yearly_compensation return number is&lt;br /&gt;
  8    begin&lt;br /&gt;
  9      return self.hourly_rate * 40 * 52;&lt;br /&gt;
 10    end;&lt;br /&gt;
 11  end;&lt;br /&gt;
 12  /&lt;br /&gt;
Type body created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop type consultant;&lt;br /&gt;
Type dropped.&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;
 &amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>