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

	<entry>
		<id>http://www.sqle.ru/index.php?title=Oracle_PL/SQL/Object_Oriented_Database/Update&amp;diff=2687&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/Update&amp;diff=2687&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/Update&amp;diff=2688&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/Update&amp;diff=2688&amp;oldid=prev"/>
				<updated>2010-05-26T10:02:40Z</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;==UPDATE a Table that Contains Row Objects (TCRO)==&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; -- UPDATE a Table that Contains Row Objects (TCRO)&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE TYPE address_obj as OBJECT(&lt;br /&gt;
  2        street VARCHAR2(20),&lt;br /&gt;
  3        city VARCHAR2(20),&lt;br /&gt;
  4        state CHAR(2),&lt;br /&gt;
  5        zip CHAR(5));&lt;br /&gt;
  6  /&lt;br /&gt;
Type created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE TABLE address_table OF ADDRESS_OBJ;&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE TABLE client (name VARCHAR2(20),&lt;br /&gt;
  2    address REF address_obj scope is address_table);&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 client VALUES (&amp;quot;Jones&amp;quot;,null);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; UPDATE client SET address =&lt;br /&gt;
  2  (SELECT REF(aa)&lt;br /&gt;
  3  FROM address_table aa&lt;br /&gt;
  4  WHERE aa.city LIKE &amp;quot;Mob%&amp;quot;)&lt;br /&gt;
  5  WHERE name = &amp;quot;Jones&amp;quot;;&lt;br /&gt;
1 row updated.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; SELECT * FROM client;&lt;br /&gt;
NAME      ADDRESS&lt;br /&gt;
--------- --------------------------------------------------&lt;br /&gt;
Jones&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 client;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table address_table;&lt;br /&gt;
Table dropped.&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;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==update calls the constructor in the SET 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;&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; 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&lt;br /&gt;
  2    values (appartment(&amp;quot;Victor Building&amp;quot;,&lt;br /&gt;
  3            address(&amp;quot;203 Washington Square&amp;quot;,&amp;quot; &amp;quot;,&amp;quot;Lansing&amp;quot;,&lt;br /&gt;
  4                    &amp;quot;MI&amp;quot;,&amp;quot;48823&amp;quot;,&amp;quot; &amp;quot;),&lt;br /&gt;
  5            597));&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO appartments&lt;br /&gt;
  2    values (appartment(&amp;quot;East Storage Shed&amp;quot;,&lt;br /&gt;
  3            address(&amp;quot;1400 A 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;),&lt;br /&gt;
  4            598));&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO appartments&lt;br /&gt;
  2    values (appartment(&amp;quot;Headquarters Building&amp;quot;,&lt;br /&gt;
  3            address(&amp;quot;150 West Jefferson&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;),&lt;br /&gt;
  4            599));&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; UPDATE appartments b&lt;br /&gt;
  2     SET b = appartment(BldgName,BldgAddress,598)&lt;br /&gt;
  3   WHERE BldgName = &amp;quot;Victor Building&amp;quot;;&lt;br /&gt;
1 row updated.&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; drop type appartment;&lt;br /&gt;
Type 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;
==UPDATE Data in a Table of Row 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; -- UPDATE Data in a Table of Row Objects&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE TYPE address_obj as OBJECT(&lt;br /&gt;
  2        street VARCHAR2(20),&lt;br /&gt;
  3        city VARCHAR2(20),&lt;br /&gt;
  4        state CHAR(2),&lt;br /&gt;
  5        zip CHAR(5));&lt;br /&gt;
  6  /&lt;br /&gt;
Type created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE TABLE address_table OF ADDRESS_OBJ;&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO address_table VALUES (&amp;quot;4 D St.&amp;quot;, &amp;quot;Gulf Breeze&amp;quot;,&amp;quot;FL&amp;quot;,&amp;quot;32563&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; SELECT *&lt;br /&gt;
  2  FROM address_table;&lt;br /&gt;
STREET               CITY                 ST ZIP&lt;br /&gt;
-------------------- -------------------- -- -----&lt;br /&gt;
4 D St.              Gulf Breeze          FL 32563&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; UPDATE address_table&lt;br /&gt;
  2  SET zip = 32514&lt;br /&gt;
  3  WHERE zip = 32504;&lt;br /&gt;
0 rows updated.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; UPDATE address_table&lt;br /&gt;
  2  SET street = &amp;quot;11 A Dr&amp;quot;&lt;br /&gt;
  3  WHERE city LIKE &amp;quot;Gulf%&amp;quot;;&lt;br /&gt;
1 row updated.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; SELECT *&lt;br /&gt;
  2  FROM address_table;&lt;br /&gt;
STREET               CITY                 ST ZIP&lt;br /&gt;
-------------------- -------------------- -- -----&lt;br /&gt;
11 A Dr              Gulf Breeze          FL 32563&lt;br /&gt;
&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table address_table;&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;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Update user-defined type column==&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 table emp&lt;br /&gt;
  2  ( empno      NUMBER(4)    constraint E_PK primary key&lt;br /&gt;
  3  , ename      VARCHAR2(8)&lt;br /&gt;
  4  , init       VARCHAR2(5)&lt;br /&gt;
  5  , job        VARCHAR2(8)&lt;br /&gt;
  6  , mgr        NUMBER(4)&lt;br /&gt;
  7  , bdate      DATE&lt;br /&gt;
  8  , sal        NUMBER(6,2)&lt;br /&gt;
  9  , comm       NUMBER(6,2)&lt;br /&gt;
 10  , deptno     NUMBER(2)    default 10&lt;br /&gt;
 11  ) ;&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt; insert into emp values(1,&amp;quot;Tom&amp;quot;,&amp;quot;N&amp;quot;,   &amp;quot;TRAINER&amp;quot;, 13,date &amp;quot;1965-12-17&amp;quot;,  800 , NULL,  20);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into emp values(2,&amp;quot;Jack&amp;quot;,&amp;quot;JAM&amp;quot;, &amp;quot;Tester&amp;quot;,6,date &amp;quot;1961-02-20&amp;quot;,  1600, 300,   30);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into emp values(3,&amp;quot;Wil&amp;quot;,&amp;quot;TF&amp;quot; ,  &amp;quot;Tester&amp;quot;,6,date &amp;quot;1962-02-22&amp;quot;,  1250, 500,   30);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into emp values(4,&amp;quot;Jane&amp;quot;,&amp;quot;JM&amp;quot;,  &amp;quot;Designer&amp;quot;, 9,date &amp;quot;1967-04-02&amp;quot;,  2975, NULL,  20);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into emp values(5,&amp;quot;Mary&amp;quot;,&amp;quot;P&amp;quot;,  &amp;quot;Tester&amp;quot;,6,date &amp;quot;1956-09-28&amp;quot;,  1250, 1400,  30);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into emp values(6,&amp;quot;Black&amp;quot;,&amp;quot;R&amp;quot;,   &amp;quot;Designer&amp;quot;, 9,date &amp;quot;1963-11-01&amp;quot;,  2850, NULL,  30);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into emp values(7,&amp;quot;Chris&amp;quot;,&amp;quot;AB&amp;quot;,  &amp;quot;Designer&amp;quot;, 9,date &amp;quot;1965-06-09&amp;quot;,  2450, NULL,  10);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into emp values(8,&amp;quot;Smart&amp;quot;,&amp;quot;SCJ&amp;quot;, &amp;quot;TRAINER&amp;quot;, 4,date &amp;quot;1959-11-26&amp;quot;,  3000, NULL,  20);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into emp values(9,&amp;quot;Peter&amp;quot;,&amp;quot;CC&amp;quot;,   &amp;quot;Designer&amp;quot;,NULL,date &amp;quot;1952-11-17&amp;quot;,  5000, NULL,  10);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into emp values(10,&amp;quot;Take&amp;quot;,&amp;quot;JJ&amp;quot;, &amp;quot;Tester&amp;quot;,6,date &amp;quot;1968-09-28&amp;quot;,  1500, 0,     30);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into emp values(11,&amp;quot;Ana&amp;quot;,&amp;quot;AA&amp;quot;,  &amp;quot;TRAINER&amp;quot;, 8,date &amp;quot;1966-12-30&amp;quot;,  1100, NULL,  20);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into emp values(12,&amp;quot;Jane&amp;quot;,&amp;quot;R&amp;quot;,   &amp;quot;Manager&amp;quot;,   6,date &amp;quot;1969-12-03&amp;quot;,  800 , NULL,  30);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into emp values(13,&amp;quot;Fake&amp;quot;,&amp;quot;MG&amp;quot;,   &amp;quot;TRAINER&amp;quot;, 4,date &amp;quot;1959-02-13&amp;quot;,  3000, NULL,  20);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into emp values(14,&amp;quot;Mike&amp;quot;,&amp;quot;TJA&amp;quot;,&amp;quot;Manager&amp;quot;,   7,date &amp;quot;1962-01-23&amp;quot;,  1300, NULL,  10);&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; create table e&lt;br /&gt;
  2  as&lt;br /&gt;
  3  select empno, ename, init, mgr, deptno&lt;br /&gt;
  4  from   emp;&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; create or replace type numberlist_t&lt;br /&gt;
  2  as varray(4) of varchar2(20);&lt;br /&gt;
  3  /&lt;br /&gt;
Type created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; column numlist format a60&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; alter table e add (numlist numberlist_t);&lt;br /&gt;
Table altered.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; describe e&lt;br /&gt;
 Name                                      Null?    Type&lt;br /&gt;
 ----------------------------------------- -------- ----------------------------&lt;br /&gt;
 EMPNO                                              NUMBER(4)&lt;br /&gt;
 ENAME                                              VARCHAR2(8)&lt;br /&gt;
 INIT                                               VARCHAR2(5)&lt;br /&gt;
 MGR                                                NUMBER(4)&lt;br /&gt;
 DEPTNO                                             NUMBER(2)&lt;br /&gt;
 NUMLIST                                            NUMBERLIST_T&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; update e&lt;br /&gt;
  2  set    numlist = numberlist_t(&amp;quot;1234&amp;quot;,&amp;quot;06-78532&amp;quot;,&amp;quot;029-8532&amp;quot;)&lt;br /&gt;
  3  where  empno = 9;&lt;br /&gt;
1 row updated.&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;&lt;br /&gt;
SQL&amp;gt; drop table e;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt; drop table emp;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;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;
==Update using the PL/SQL variables==&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 StudentList AS TABLE OF NUMBER(5);&lt;br /&gt;
  2  /&lt;br /&gt;
Type created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE TABLE library_catalog (&lt;br /&gt;
  2    catalog_number NUMBER(4),&lt;br /&gt;
  3    num_copies     NUMBER,&lt;br /&gt;
  4    num_out        NUMBER,&lt;br /&gt;
  5    checked_out    StudentList)&lt;br /&gt;
  6    NESTED TABLE checked_out STORE AS co_tab;&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; DECLARE&lt;br /&gt;
  2    v_StudentList1 StudentList := StudentList(10000, 10002, 10003);&lt;br /&gt;
  3    v_StudentList2 StudentList := StudentList(10000, 10002, 10003);&lt;br /&gt;
  4    v_StudentList3 StudentList := StudentList(10000, 10002, 10003);&lt;br /&gt;
  5  BEGIN&lt;br /&gt;
  6    -- First insert rows with NULL nested tables.&lt;br /&gt;
  7    INSERT INTO library_catalog (catalog_number, num_copies, num_out)&lt;br /&gt;
  8      VALUES (1000, 20, 3);&lt;br /&gt;
  9    INSERT INTO library_catalog (catalog_number, num_copies, num_out)&lt;br /&gt;
 10      VALUES (1001, 20, 3);&lt;br /&gt;
 11    INSERT INTO library_catalog (catalog_number, num_copies, num_out)&lt;br /&gt;
 12      VALUES (1002, 10, 3);&lt;br /&gt;
 13    INSERT INTO library_catalog (catalog_number, num_copies, num_out)&lt;br /&gt;
 14      VALUES (2001, 50, 0);&lt;br /&gt;
 15    INSERT INTO library_catalog (catalog_number, num_copies, num_out)&lt;br /&gt;
 16      VALUES (3001, 5, 0);&lt;br /&gt;
 17    INSERT INTO library_catalog (catalog_number, num_copies, num_out)&lt;br /&gt;
 18      VALUES (3002, 5, 1);&lt;br /&gt;
 19&lt;br /&gt;
 20    UPDATE library_catalog&lt;br /&gt;
 21      SET checked_out = v_StudentList1&lt;br /&gt;
 22      WHERE catalog_number = 1000;&lt;br /&gt;
 23    UPDATE library_catalog&lt;br /&gt;
 24      SET checked_out = v_StudentList2&lt;br /&gt;
 25      WHERE catalog_number = 1001;&lt;br /&gt;
 26    UPDATE library_catalog&lt;br /&gt;
 27      SET checked_out = v_StudentList3&lt;br /&gt;
 28      WHERE catalog_number = 1002;&lt;br /&gt;
 29&lt;br /&gt;
 30    -- And update the last row using a new variable.&lt;br /&gt;
 31    UPDATE library_catalog&lt;br /&gt;
 32      SET checked_out = StudentList(10009)&lt;br /&gt;
 33      WHERE catalog_number = 3002;&lt;br /&gt;
 34  END;&lt;br /&gt;
 35  /&lt;br /&gt;
PL/SQL procedure successfully completed.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; DELETE FROM library_catalog&lt;br /&gt;
  2    WHERE catalog_number = 3001;&lt;br /&gt;
1 row deleted.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; select * from library_catalog;&lt;br /&gt;
CATALOG_NUMBER NUM_COPIES    NUM_OUT&lt;br /&gt;
-------------- ---------- ----------&lt;br /&gt;
CHECKED_OUT&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
          1000         20          3&lt;br /&gt;
STUDENTLIST(10000, 10002, 10003)&lt;br /&gt;
          1001         20          3&lt;br /&gt;
STUDENTLIST(10000, 10002, 10003)&lt;br /&gt;
          1002         10          3&lt;br /&gt;
STUDENTLIST(10000, 10002, 10003)&lt;br /&gt;
&lt;br /&gt;
CATALOG_NUMBER NUM_COPIES    NUM_OUT&lt;br /&gt;
-------------- ---------- ----------&lt;br /&gt;
CHECKED_OUT&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
          2001         50          0&lt;br /&gt;
&lt;br /&gt;
          3002          5          1&lt;br /&gt;
STUDENTLIST(10009)&lt;br /&gt;
&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table library_catalog;&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 type constructor in update statement==&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; CREATE TABLE employee(&lt;br /&gt;
  2           emp_id           INTEGER,&lt;br /&gt;
  3           emp_name         VARCHAR2(32),&lt;br /&gt;
  4           supervised_by    INTEGER,&lt;br /&gt;
  5           pay_rate         NUMBER(9,2),&lt;br /&gt;
  6           pay_type         CHAR,&lt;br /&gt;
  7           home_address    address);&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO employee&lt;br /&gt;
  2    (emp_id, emp_name,pay_rate,pay_type,home_address)&lt;br /&gt;
  3    VALUES (597,&amp;quot;Matthew Higgenbottom&amp;quot;,120000,&amp;quot;S&amp;quot;,&lt;br /&gt;
  4            address(&amp;quot;101 Maple&amp;quot;,&amp;quot;&amp;quot;,&amp;quot;Mio&amp;quot;,&amp;quot;MI&amp;quot;,&amp;quot;48640&amp;quot;,&amp;quot;5173943551&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; set echo on&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; UPDATE employee e&lt;br /&gt;
  2     SET e.home_address  = address(e.home_address.street_1,&lt;br /&gt;
  3                         e.home_address.street_2, e.home_address.city,&lt;br /&gt;
  4                         e.home_address.state_abbr, e.home_address.zip_code,&lt;br /&gt;
  5                         &amp;quot;5173433333&amp;quot;)&lt;br /&gt;
  6   WHERE emp_id = 597;&lt;br /&gt;
1 row updated.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; COMMIT;&lt;br /&gt;
Commit complete.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table employee;&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;
==Using UPDATE with Columns==&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; --Using UPDATE with TYPEed Columns&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE TYPE address_obj as OBJECT(&lt;br /&gt;
  2        street VARCHAR2(20),&lt;br /&gt;
  3        city VARCHAR2(20),&lt;br /&gt;
  4        state CHAR(2),&lt;br /&gt;
  5        zip CHAR(5));&lt;br /&gt;
  6  /&lt;br /&gt;
Type created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE TABLE emp (empno   NUMBER(3),&lt;br /&gt;
  2                    name    VARCHAR2(20),&lt;br /&gt;
  3                    address ADDRESS_OBJ);&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO emp VALUES (101, &amp;quot;Adam&amp;quot;, ADDRESS_OBJ(&amp;quot;1 A St.&amp;quot;,&amp;quot;Mobile&amp;quot;,&amp;quot;AL&amp;quot;,&amp;quot;36608&amp;quot;));&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; COLUMN name FORMAT a9&lt;br /&gt;
SQL&amp;gt; COLUMN empno FORMAT 999999&lt;br /&gt;
SQL&amp;gt; COLUMN address FORMAT a50&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; UPDATE emp e&lt;br /&gt;
  2  SET e.address.zip = &amp;quot;34210&amp;quot;&lt;br /&gt;
  3  WHERE e.address.city LIKE &amp;quot;Mobile%&amp;quot;;&lt;br /&gt;
1 row updated.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; SELECT name, e.address.city FROM emp e WHERE e.address.state = &amp;quot;AL&amp;quot;;&lt;br /&gt;
NAME      ADDRESS.CITY&lt;br /&gt;
--------- --------------------&lt;br /&gt;
Adam      Mobile&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table emp;&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;
  &amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>