<?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_Tutorial%2FObject_Oriented%2FCAST</id>
		<title>Oracle PL/SQL Tutorial/Object Oriented/CAST - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://sqle.ru/index.php?action=history&amp;feed=atom&amp;title=Oracle_PL%2FSQL_Tutorial%2FObject_Oriented%2FCAST"/>
		<link rel="alternate" type="text/html" href="http://sqle.ru/index.php?title=Oracle_PL/SQL_Tutorial/Object_Oriented/CAST&amp;action=history"/>
		<updated>2026-04-04T05:30:57Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://sqle.ru/index.php?title=Oracle_PL/SQL_Tutorial/Object_Oriented/CAST&amp;diff=3006&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_Tutorial/Object_Oriented/CAST&amp;diff=3006&amp;oldid=prev"/>
				<updated>2010-05-26T13:45:46Z</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_Tutorial/Object_Oriented/CAST&amp;diff=3007&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://sqle.ru/index.php?title=Oracle_PL/SQL_Tutorial/Object_Oriented/CAST&amp;diff=3007&amp;oldid=prev"/>
				<updated>2010-05-26T10:04:50Z</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;== Cast value to custom 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;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE TABLE DEPT (DEPTNO NUMBER(2),DNAME VARCHAR2(14),LOC VARCHAR2(13) );&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO DEPT VALUES (10, &amp;quot;ACCOUNTING&amp;quot;, &amp;quot;NEW YORK&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO DEPT VALUES (20, &amp;quot;RESEARCH&amp;quot;, &amp;quot;DALLAS&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO DEPT VALUES (30, &amp;quot;SALES&amp;quot;, &amp;quot;CHICAGO&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO DEPT VALUES (40, &amp;quot;OPERATIONS&amp;quot;, &amp;quot;BOSTON&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; CREATE TABLE EMP (EMPNO NUMBER(4) NOT NULL,&lt;br /&gt;
  2                    ENAME VARCHAR2(10),&lt;br /&gt;
  3                    JOB VARCHAR2(9),&lt;br /&gt;
  4                    MGR NUMBER(4),&lt;br /&gt;
  5                    HIREDATE DATE,&lt;br /&gt;
  6                    SAL NUMBER(7, 2),&lt;br /&gt;
  7                    COMM NUMBER(7, 2),&lt;br /&gt;
  8                    DEPTNO NUMBER(2));&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7369, &amp;quot;SMITH&amp;quot;, &amp;quot;CLERK&amp;quot;,    7902, TO_DATE(&amp;quot;17-DEC-1980&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 800, NULL, 20);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7499, &amp;quot;ALLEN&amp;quot;, &amp;quot;SALESMAN&amp;quot;, 7698, TO_DATE(&amp;quot;20-FEB-1981&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 1600, 300, 30);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7521, &amp;quot;WARD&amp;quot;,  &amp;quot;SALESMAN&amp;quot;, 7698, TO_DATE(&amp;quot;22-FEB-1981&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 1250, 500, 30);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7566, &amp;quot;JONES&amp;quot;, &amp;quot;MANAGER&amp;quot;,  7839, TO_DATE(&amp;quot;2-APR-1981&amp;quot;,  &amp;quot;DD-MON-YYYY&amp;quot;), 2975, NULL, 20);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7654, &amp;quot;MARTIN&amp;quot;, &amp;quot;SALESMAN&amp;quot;, 7698,TO_DATE(&amp;quot;28-SEP-1981&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 1250, 1400, 30);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7698, &amp;quot;BLAKE&amp;quot;, &amp;quot;MANAGER&amp;quot;, 7839,TO_DATE(&amp;quot;1-MAY-1981&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 2850, NULL, 30);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7782, &amp;quot;CLARK&amp;quot;, &amp;quot;MANAGER&amp;quot;, 7839,TO_DATE(&amp;quot;9-JUN-1981&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 2450, NULL, 10);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7788, &amp;quot;SCOTT&amp;quot;, &amp;quot;ANALYST&amp;quot;, 7566,TO_DATE(&amp;quot;09-DEC-1982&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 3000, NULL, 20);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7839, &amp;quot;KING&amp;quot;, &amp;quot;PRESIDENT&amp;quot;, NULL,TO_DATE(&amp;quot;17-NOV-1981&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 5000, NULL, 10);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7844, &amp;quot;TURNER&amp;quot;, &amp;quot;SALESMAN&amp;quot;, 7698,TO_DATE(&amp;quot;8-SEP-1981&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 1500, 0, 30);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7876, &amp;quot;ADAMS&amp;quot;, &amp;quot;CLERK&amp;quot;, 7788,TO_DATE(&amp;quot;12-JAN-1983&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 1100, NULL, 20);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7900, &amp;quot;JAMES&amp;quot;, &amp;quot;CLERK&amp;quot;, 7698,TO_DATE(&amp;quot;3-DEC-1981&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 950, NULL, 30);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7902, &amp;quot;FORD&amp;quot;, &amp;quot;ANALYST&amp;quot;, 7566,TO_DATE(&amp;quot;3-DEC-1981&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 3000, NULL, 20);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7934, &amp;quot;MILLER&amp;quot;, &amp;quot;CLERK&amp;quot;, 7782,TO_DATE(&amp;quot;23-JAN-1982&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 1300, NULL, 10);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; create or replace type emp_type&lt;br /&gt;
  2    as object&lt;br /&gt;
  3    (empno       number(4),&lt;br /&gt;
  4     ename       varchar2(10),&lt;br /&gt;
  5     job         varchar2(9),&lt;br /&gt;
  6     mgr         number(4),&lt;br /&gt;
  7     hiredate    date,&lt;br /&gt;
  8     sal         number(7, 2),&lt;br /&gt;
  9     comm        number(7, 2)&lt;br /&gt;
 10    );&lt;br /&gt;
 11  /&lt;br /&gt;
Type created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; create or replace type emp_tab_type&lt;br /&gt;
  2    as table of emp_type&lt;br /&gt;
  3  /&lt;br /&gt;
Type created.&lt;br /&gt;
SQL&amp;gt; create table dept_and_emp&lt;br /&gt;
  2    (deptno number(2) primary key,&lt;br /&gt;
  3     dname     varchar2(14),&lt;br /&gt;
  4     loc       varchar2(13),&lt;br /&gt;
  5     emps      emp_tab_type&lt;br /&gt;
  6    )&lt;br /&gt;
  7    nested table emps store as emps_nt;&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; alter table emps_nt add constraint emps_empno_unique&lt;br /&gt;
  2               unique(empno)&lt;br /&gt;
  3  /&lt;br /&gt;
Table altered.&lt;br /&gt;
&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; insert into dept_and_emp&lt;br /&gt;
  2    select dept.*,&lt;br /&gt;
  3       CAST( multiset( select empno, ename, job, mgr, hiredate, sal, comm&lt;br /&gt;
  4                         from emp&lt;br /&gt;
  5                         where emp.deptno = dept.deptno ) AS emp_tab_type )&lt;br /&gt;
  6      from dept&lt;br /&gt;
  7  /&lt;br /&gt;
4 rows created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; select d.deptno, d.dname, emp.*&lt;br /&gt;
  2    from dept_and_emp D, table(d.emps) emp&lt;br /&gt;
  3  /&lt;br /&gt;
    DEPTNO DNAME               EMPNO ENAME      JOB              MGR HIREDATE         SAL       COMM&lt;br /&gt;
---------- -------------- ---------- ---------- --------- ---------- --------- ---------- ----------&lt;br /&gt;
        10 ACCOUNTING           7782 CLARK      MANAGER         7839 09-JUN-81       2450&lt;br /&gt;
        10 ACCOUNTING           7839 KING       PRESIDENT            17-NOV-81       5000&lt;br /&gt;
        10 ACCOUNTING           7934 MILLER     CLERK           7782 23-JAN-82       1300&lt;br /&gt;
        20 RESEARCH             7369 SMITH      CLERK           7902 17-DEC-80        800&lt;br /&gt;
        20 RESEARCH             7566 JONES      MANAGER         7839 02-APR-81       2975&lt;br /&gt;
        20 RESEARCH             7788 SCOTT      ANALYST         7566 09-DEC-82       3000&lt;br /&gt;
        20 RESEARCH             7876 ADAMS      CLERK           7788 12-JAN-83       1100&lt;br /&gt;
        20 RESEARCH             7902 FORD       ANALYST         7566 03-DEC-81       3000&lt;br /&gt;
        30 SALES                7499 ALLEN      SALESMAN        7698 20-FEB-81       1600        300&lt;br /&gt;
        30 SALES                7521 WARD       SALESMAN        7698 22-FEB-81       1250        500&lt;br /&gt;
        30 SALES                7654 MARTIN     SALESMAN        7698 28-SEP-81       1250       1400&lt;br /&gt;
    DEPTNO DNAME               EMPNO ENAME      JOB              MGR HIREDATE         SAL       COMM&lt;br /&gt;
---------- -------------- ---------- ---------- --------- ---------- --------- ---------- ----------&lt;br /&gt;
        30 SALES                7698 BLAKE      MANAGER         7839 01-MAY-81       2850&lt;br /&gt;
        30 SALES                7844 TURNER     SALESMAN        7698 08-SEP-81       1500          0&lt;br /&gt;
        30 SALES                7900 JAMES      CLERK           7698 03-DEC-81        950&lt;br /&gt;
14 rows selected.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table dept cascade constraint;&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; drop table dept_and_emp;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt; drop type emp_tab_type;&lt;br /&gt;
Type dropped.&lt;br /&gt;
SQL&amp;gt; drop type emp_type;&lt;br /&gt;
Type dropped.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== The CAST Function==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The &amp;quot;THE&amp;quot; function is one way to get individual members from the VARRAY.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The CAST function is used to convert collection types to ordinary, common types in Oracle. CAST may be used in a SELECT to explicitly define that a collection type is being converted:&amp;lt;/p&amp;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;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE TYPE mem_type IS VARRAY(10) of VARCHAR2(15)&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 club (Name VARCHAR2(10),&lt;br /&gt;
  2  Address VARCHAR2(20),&lt;br /&gt;
  3  City VARCHAR2(20),&lt;br /&gt;
  4  Phone VARCHAR2(8),&lt;br /&gt;
  5  Members mem_type)&lt;br /&gt;
  6  /&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 club VALUES (&amp;quot;AL&amp;quot;,&amp;quot;111 First St.&amp;quot;,&amp;quot;Mobile&amp;quot;,&lt;br /&gt;
  2  &amp;quot;222-2222&amp;quot;, mem_type(&amp;quot;Brenda&amp;quot;,&amp;quot;Richard&amp;quot;));&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO club VALUES (&amp;quot;FL&amp;quot;,&amp;quot;222 Second St.&amp;quot;,&amp;quot;Orlando&amp;quot;,&lt;br /&gt;
  2  &amp;quot;333-3333&amp;quot;, mem_type(&amp;quot;Gen&amp;quot;,&amp;quot;John&amp;quot;,&amp;quot;Steph&amp;quot;,&amp;quot;JJ&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;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; SELECT COLUMN_VALUE FROM&lt;br /&gt;
  2  THE(SELECT CAST(c.members as mem_type)&lt;br /&gt;
  3  FROM club c&lt;br /&gt;
  4  WHERE c.name = &amp;quot;FL&amp;quot;);&lt;br /&gt;
COLUMN_VALUE&lt;br /&gt;
---------------&lt;br /&gt;
Gen&lt;br /&gt;
John&lt;br /&gt;
Steph&lt;br /&gt;
JJ&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 club;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt; drop type mem_type;&lt;br /&gt;
Type dropped.&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== The CAST function converts an object type (such as a VARRAY) into a common type that can be queried. Oracle 10g automatically converts the VARRAY without the CAST.==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The CAST function may also be used with the MULTISET function to perform DML operations on VARRAYs. MULTISET is the &amp;quot;reverse&amp;quot; of CAST in that MULTISET converts a nonobject set of data to an object set. Suppose we create a new table of names:&amp;lt;/p&amp;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;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE TYPE mem_type IS VARRAY(10) of VARCHAR2(15)&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 club (Name VARCHAR2(10),&lt;br /&gt;
  2  Address VARCHAR2(20),&lt;br /&gt;
  3  City VARCHAR2(20),&lt;br /&gt;
  4  Phone VARCHAR2(8),&lt;br /&gt;
  5  Members mem_type)&lt;br /&gt;
  6  /&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 club VALUES (&amp;quot;AL&amp;quot;,&amp;quot;111 First St.&amp;quot;,&amp;quot;Mobile&amp;quot;,&lt;br /&gt;
  2  &amp;quot;222-2222&amp;quot;, mem_type(&amp;quot;Brenda&amp;quot;,&amp;quot;Richard&amp;quot;));&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO club VALUES (&amp;quot;FL&amp;quot;,&amp;quot;222 Second St.&amp;quot;,&amp;quot;Orlando&amp;quot;,&lt;br /&gt;
  2  &amp;quot;333-3333&amp;quot;, mem_type(&amp;quot;Gen&amp;quot;,&amp;quot;John&amp;quot;,&amp;quot;Steph&amp;quot;,&amp;quot;JJ&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;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; SELECT COLUMN_VALUE FROM&lt;br /&gt;
  2  THE(SELECT CAST(c.members as mem_type)&lt;br /&gt;
  3  FROM club c&lt;br /&gt;
  4  WHERE c.name = &amp;quot;FL&amp;quot;);&lt;br /&gt;
COLUMN_VALUE&lt;br /&gt;
---------------&lt;br /&gt;
Gen&lt;br /&gt;
John&lt;br /&gt;
Steph&lt;br /&gt;
JJ&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 newnames (n varchar2(20))&lt;br /&gt;
  2  /&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO newnames VALUES (&amp;quot;Beryl&amp;quot;)&lt;br /&gt;
  2  /&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO newnames VALUES (&amp;quot;Fred&amp;quot;)&lt;br /&gt;
  2  /&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; SELECT *&lt;br /&gt;
  2  FROM newnames&lt;br /&gt;
  3  /&lt;br /&gt;
N&lt;br /&gt;
--------------------&lt;br /&gt;
Beryl&lt;br /&gt;
Fred&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO club VALUES (&amp;quot;VA&amp;quot;,null,null,null,null)&lt;br /&gt;
  2  /&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; UPDATE club SET members =&lt;br /&gt;
  2  CAST(MULTISET(SELECT n FROM newnames) as mem_type)&lt;br /&gt;
  3  WHERE name = &amp;quot;VA&amp;quot;&lt;br /&gt;
  4  /&lt;br /&gt;
1 row updated.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; select * from club;&lt;br /&gt;
NAME       ADDRESS                                            CITY                 PHONE&lt;br /&gt;
---------- -------------------------------------------------- -------------------- --------&lt;br /&gt;
MEMBERS&lt;br /&gt;
-------------------------------------------------------------------------------------------&lt;br /&gt;
AL         111 First St.                                      Mobile               222-2222&lt;br /&gt;
MEM_TYPE(&amp;quot;Brenda&amp;quot;, &amp;quot;Richard&amp;quot;)&lt;br /&gt;
FL         222 Second St.                                     Orlando              333-3333&lt;br /&gt;
MEM_TYPE(&amp;quot;Gen&amp;quot;, &amp;quot;John&amp;quot;, &amp;quot;Steph&amp;quot;, &amp;quot;JJ&amp;quot;)&lt;br /&gt;
VA&lt;br /&gt;
MEM_TYPE(&amp;quot;Beryl&amp;quot;, &amp;quot;Fred&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO club VALUES(&amp;quot;MD&amp;quot;,null, null,null,&lt;br /&gt;
  2  CAST(MULTISET(SELECT * FROM newnames) as mem_type))&lt;br /&gt;
  3  /&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; select * from club;&lt;br /&gt;
NAME       ADDRESS                                            CITY                 PHONE&lt;br /&gt;
---------- -------------------------------------------------- -------------------- --------&lt;br /&gt;
MEMBERS&lt;br /&gt;
-------------------------------------------------------------------------------------------&lt;br /&gt;
AL         111 First St.                                      Mobile               222-2222&lt;br /&gt;
MEM_TYPE(&amp;quot;Brenda&amp;quot;, &amp;quot;Richard&amp;quot;)&lt;br /&gt;
FL         222 Second St.                                     Orlando              333-3333&lt;br /&gt;
MEM_TYPE(&amp;quot;Gen&amp;quot;, &amp;quot;John&amp;quot;, &amp;quot;Steph&amp;quot;, &amp;quot;JJ&amp;quot;)&lt;br /&gt;
VA&lt;br /&gt;
MEM_TYPE(&amp;quot;Beryl&amp;quot;, &amp;quot;Fred&amp;quot;)&lt;br /&gt;
MD&lt;br /&gt;
MEM_TYPE(&amp;quot;Beryl&amp;quot;, &amp;quot;Fred&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table newnames;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table club;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt; drop type mem_type;&lt;br /&gt;
Type dropped.&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== Transform a collection into a table and reference it in a SQL query.==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;You do this by casting the collection to a table.&amp;lt;/p&amp;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;
SQL&amp;gt; -- create demo table&lt;br /&gt;
SQL&amp;gt; create table Employee(&lt;br /&gt;
  2    ID                 VARCHAR2(4 BYTE)         NOT NULL,&lt;br /&gt;
  3    First_Name         VARCHAR2(10 BYTE),&lt;br /&gt;
  4    Last_Name          VARCHAR2(10 BYTE),&lt;br /&gt;
  5    Start_Date         DATE,&lt;br /&gt;
  6    End_Date           DATE,&lt;br /&gt;
  7    Salary             Number(8,2),&lt;br /&gt;
  8    City               VARCHAR2(10 BYTE),&lt;br /&gt;
  9    Description        VARCHAR2(15 BYTE)&lt;br /&gt;
 10  )&lt;br /&gt;
 11  /&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; -- prepare data&lt;br /&gt;
SQL&amp;gt; insert into Employee(ID,  First_Name, Last_Name, Start_Date,                     End_Date,                       Salary,  City,       Description)&lt;br /&gt;
  2               values (&amp;quot;01&amp;quot;,&amp;quot;Jason&amp;quot;,    &amp;quot;Martin&amp;quot;,  to_date(&amp;quot;19960725&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), to_date(&amp;quot;20060725&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), 1234.56, &amp;quot;Toronto&amp;quot;,  &amp;quot;Programmer&amp;quot;)&lt;br /&gt;
  3  /&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into Employee(ID,  First_Name, Last_Name, Start_Date,                     End_Date,                       Salary,  City,       Description)&lt;br /&gt;
  2                values(&amp;quot;02&amp;quot;,&amp;quot;Alison&amp;quot;,   &amp;quot;Mathews&amp;quot;, to_date(&amp;quot;19760321&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), to_date(&amp;quot;19860221&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), 6661.78, &amp;quot;Vancouver&amp;quot;,&amp;quot;Tester&amp;quot;)&lt;br /&gt;
  3  /&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into Employee(ID,  First_Name, Last_Name, Start_Date,                     End_Date,                       Salary,  City,       Description)&lt;br /&gt;
  2                values(&amp;quot;03&amp;quot;,&amp;quot;James&amp;quot;,    &amp;quot;Smith&amp;quot;,   to_date(&amp;quot;19781212&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), to_date(&amp;quot;19900315&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), 6544.78, &amp;quot;Vancouver&amp;quot;,&amp;quot;Tester&amp;quot;)&lt;br /&gt;
  3  /&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into Employee(ID,  First_Name, Last_Name, Start_Date,                     End_Date,                       Salary,  City,       Description)&lt;br /&gt;
  2                values(&amp;quot;04&amp;quot;,&amp;quot;Celia&amp;quot;,    &amp;quot;Rice&amp;quot;,    to_date(&amp;quot;19821024&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), to_date(&amp;quot;19990421&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), 2344.78, &amp;quot;Vancouver&amp;quot;,&amp;quot;Manager&amp;quot;)&lt;br /&gt;
  3  /&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into Employee(ID,  First_Name, Last_Name, Start_Date,                     End_Date,                       Salary,  City,       Description)&lt;br /&gt;
  2                values(&amp;quot;05&amp;quot;,&amp;quot;Robert&amp;quot;,   &amp;quot;Black&amp;quot;,   to_date(&amp;quot;19840115&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), to_date(&amp;quot;19980808&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), 2334.78, &amp;quot;Vancouver&amp;quot;,&amp;quot;Tester&amp;quot;)&lt;br /&gt;
  3  /&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into Employee(ID,  First_Name, Last_Name, Start_Date,                     End_Date,                       Salary, City,        Description)&lt;br /&gt;
  2                values(&amp;quot;06&amp;quot;,&amp;quot;Linda&amp;quot;,    &amp;quot;Green&amp;quot;,   to_date(&amp;quot;19870730&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), to_date(&amp;quot;19960104&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), 4322.78,&amp;quot;New York&amp;quot;,  &amp;quot;Tester&amp;quot;)&lt;br /&gt;
  3  /&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into Employee(ID,  First_Name, Last_Name, Start_Date,                     End_Date,                       Salary, City,        Description)&lt;br /&gt;
  2                values(&amp;quot;07&amp;quot;,&amp;quot;David&amp;quot;,    &amp;quot;Larry&amp;quot;,   to_date(&amp;quot;19901231&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), to_date(&amp;quot;19980212&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), 7897.78,&amp;quot;New York&amp;quot;,  &amp;quot;Manager&amp;quot;)&lt;br /&gt;
  3  /&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into Employee(ID,  First_Name, Last_Name, Start_Date,                     End_Date,                       Salary, City,        Description)&lt;br /&gt;
  2                values(&amp;quot;08&amp;quot;,&amp;quot;James&amp;quot;,    &amp;quot;Cat&amp;quot;,     to_date(&amp;quot;19960917&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), to_date(&amp;quot;20020415&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), 1232.78,&amp;quot;Vancouver&amp;quot;, &amp;quot;Tester&amp;quot;)&lt;br /&gt;
  3  /&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; -- display data in the table&lt;br /&gt;
SQL&amp;gt; select * from Employee&lt;br /&gt;
  2  /&lt;br /&gt;
ID   FIRST_NAME           LAST_NAME            START_DAT END_DATE      SALARY CITY       DESCRIPTION&lt;br /&gt;
---- -------------------- -------------------- --------- --------- ---------- ---------- ---------------&lt;br /&gt;
01   Jason                Martin               25-JUL-96 25-JUL-06    1234.56 Toronto    Programmer&lt;br /&gt;
02   Alison               Mathews              21-MAR-76 21-FEB-86    6661.78 Vancouver  Tester&lt;br /&gt;
03   James                Smith                12-DEC-78 15-MAR-90    6544.78 Vancouver  Tester&lt;br /&gt;
04   Celia                Rice                 24-OCT-82 21-APR-99    2344.78 Vancouver  Manager&lt;br /&gt;
05   Robert               Black                15-JAN-84 08-AUG-98    2334.78 Vancouver  Tester&lt;br /&gt;
06   Linda                Green                30-JUL-87 04-JAN-96    4322.78 New York   Tester&lt;br /&gt;
07   David                Larry                31-DEC-90 12-FEB-98    7897.78 New York   Manager&lt;br /&gt;
08   James                Cat                  17-SEP-96 15-APR-02    1232.78 Vancouver  Tester&lt;br /&gt;
8 rows selected.&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 emp2_oty is object (empNo NUMBER,eName VARCHAR2(10))&lt;br /&gt;
  2  /&lt;br /&gt;
Type created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; create or replace type emp2_nt is table of emp2_oty&lt;br /&gt;
  2  /&lt;br /&gt;
Type created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; create or replace function f_getEmps_nt(i_deptNo number, i_hireDate DATE)&lt;br /&gt;
  2  return emp2_nt&lt;br /&gt;
  3  is&lt;br /&gt;
  4      v_emp2_nt emp2_nt:=emp2_nt();&lt;br /&gt;
  5      cursor c_emp is select * from employee;&lt;br /&gt;
  6  begin&lt;br /&gt;
  7    for r_emp in c_emp&lt;br /&gt;
  8    loop&lt;br /&gt;
  9      if i_deptNo is null then&lt;br /&gt;
 10        if i_hireDate is null or to_char(i_hireDate,&amp;quot;mm&amp;quot;)= to_char(r_emp.start_Date,&amp;quot;mm&amp;quot;)&lt;br /&gt;
 11        then&lt;br /&gt;
 12           v_emp2_nt.extend;&lt;br /&gt;
 13           v_emp2_nt(v_emp2_nt.last):= emp2_oty(r_emp.id, r_emp.first_Name);&lt;br /&gt;
 14        end if;&lt;br /&gt;
 15      elsif i_deptNo=r_emp.id then&lt;br /&gt;
 16        v_emp2_nt.extend;&lt;br /&gt;
 17        v_emp2_nt(v_emp2_nt.last):= emp2_oty(r_emp.id, r_emp.first_name);&lt;br /&gt;
 18      end if;&lt;br /&gt;
 19    end loop;&lt;br /&gt;
 20    return v_emp2_nt;&lt;br /&gt;
 21  end;&lt;br /&gt;
 22  /&lt;br /&gt;
Function 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; select t.*&lt;br /&gt;
  2  from table (cast (f_getEmps_nt (20,null) as emp2_nt)) t&lt;br /&gt;
  3  /&lt;br /&gt;
no rows selected&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; create or replace package pkg_globals&lt;br /&gt;
  2  is&lt;br /&gt;
  3      v_currentDeptno number:=10;&lt;br /&gt;
  4      function f_getCurrDeptNo return number;&lt;br /&gt;
  5      procedure p_setCurrDeptNo(i_nr number);&lt;br /&gt;
  6&lt;br /&gt;
  7      v_currentHireDate date:=sysdate;&lt;br /&gt;
  8      function f_getCurrHireDate return date;&lt;br /&gt;
  9      procedure p_setCurrHireDate(i_dt date);&lt;br /&gt;
 10  end;&lt;br /&gt;
 11  /&lt;br /&gt;
Package created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; create or replace package body pkg_globals&lt;br /&gt;
  2  is&lt;br /&gt;
  3      function f_getCurrDeptNo return number is&lt;br /&gt;
  4      begin&lt;br /&gt;
  5          return v_currentDeptNo;&lt;br /&gt;
  6      end;&lt;br /&gt;
  7      procedure p_setCurrDeptNo(i_nr number) is&lt;br /&gt;
  8      begin&lt;br /&gt;
  9          v_currentDeptNo:=i_nr;&lt;br /&gt;
 10      end;&lt;br /&gt;
 11      function f_getCurrHireDate return date is&lt;br /&gt;
 12      begin&lt;br /&gt;
 13          return v_currentHireDate;&lt;br /&gt;
 14      end;&lt;br /&gt;
 15      procedure p_setCurrHireDate(i_dt date) is&lt;br /&gt;
 16      begin&lt;br /&gt;
 17          v_currentHireDate:=i_dt;&lt;br /&gt;
 18      end;&lt;br /&gt;
 19  end;&lt;br /&gt;
 20  /&lt;br /&gt;
Package body created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; create or replace view v_getEmps&lt;br /&gt;
  2  as&lt;br /&gt;
  3  select *&lt;br /&gt;
  4  from table(cast (f_getEmps_nt (pkg_globals.f_getCurrDeptNo,pkg_globals.f_getCurrHireDate) as emp2_nt));&lt;br /&gt;
View created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop type emp2_nt;&lt;br /&gt;
Type dropped.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop type emp2_oty;&lt;br /&gt;
Type dropped.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; -- clean the table&lt;br /&gt;
SQL&amp;gt; drop table Employee&lt;br /&gt;
  2  /&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== Use view to cast records in result set to 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;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE TABLE EMP (EMPNO NUMBER(4) NOT NULL,&lt;br /&gt;
  2                    ENAME VARCHAR2(10),&lt;br /&gt;
  3                    JOB VARCHAR2(9),&lt;br /&gt;
  4                    MGR NUMBER(4),&lt;br /&gt;
  5                    HIREDATE DATE,&lt;br /&gt;
  6                    SAL NUMBER(7, 2),&lt;br /&gt;
  7                    COMM NUMBER(7, 2),&lt;br /&gt;
  8                    DEPTNO NUMBER(2));&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 (7369, &amp;quot;SMITH&amp;quot;, &amp;quot;CLERK&amp;quot;,    7902, TO_DATE(&amp;quot;17-DEC-1980&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 800, NULL, 20);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7499, &amp;quot;ALLEN&amp;quot;, &amp;quot;SALESMAN&amp;quot;, 7698, TO_DATE(&amp;quot;20-FEB-1981&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 1600, 300, 30);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7521, &amp;quot;WARD&amp;quot;,  &amp;quot;SALESMAN&amp;quot;, 7698, TO_DATE(&amp;quot;22-FEB-1981&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 1250, 500, 30);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7566, &amp;quot;JONES&amp;quot;, &amp;quot;MANAGER&amp;quot;,  7839, TO_DATE(&amp;quot;2-APR-1981&amp;quot;,  &amp;quot;DD-MON-YYYY&amp;quot;), 2975, NULL, 20);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7654, &amp;quot;MARTIN&amp;quot;, &amp;quot;SALESMAN&amp;quot;, 7698,TO_DATE(&amp;quot;28-SEP-1981&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 1250, 1400, 30);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7698, &amp;quot;BLAKE&amp;quot;, &amp;quot;MANAGER&amp;quot;, 7839,TO_DATE(&amp;quot;1-MAY-1981&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 2850, NULL, 30);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7782, &amp;quot;CLARK&amp;quot;, &amp;quot;MANAGER&amp;quot;, 7839,TO_DATE(&amp;quot;9-JUN-1981&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 2450, NULL, 10);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7788, &amp;quot;SCOTT&amp;quot;, &amp;quot;ANALYST&amp;quot;, 7566,TO_DATE(&amp;quot;09-DEC-1982&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 3000, NULL, 20);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7839, &amp;quot;KING&amp;quot;, &amp;quot;PRESIDENT&amp;quot;, NULL,TO_DATE(&amp;quot;17-NOV-1981&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 5000, NULL, 10);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7844, &amp;quot;TURNER&amp;quot;, &amp;quot;SALESMAN&amp;quot;, 7698,TO_DATE(&amp;quot;8-SEP-1981&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 1500, 0, 30);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7876, &amp;quot;ADAMS&amp;quot;, &amp;quot;CLERK&amp;quot;, 7788,TO_DATE(&amp;quot;12-JAN-1983&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 1100, NULL, 20);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7900, &amp;quot;JAMES&amp;quot;, &amp;quot;CLERK&amp;quot;, 7698,TO_DATE(&amp;quot;3-DEC-1981&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 950, NULL, 30);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7902, &amp;quot;FORD&amp;quot;, &amp;quot;ANALYST&amp;quot;, 7566,TO_DATE(&amp;quot;3-DEC-1981&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 3000, NULL, 20);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7934, &amp;quot;MILLER&amp;quot;, &amp;quot;CLERK&amp;quot;, 7782,TO_DATE(&amp;quot;23-JAN-1982&amp;quot;, &amp;quot;DD-MON-YYYY&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;&lt;br /&gt;
SQL&amp;gt; CREATE TABLE DEPT (DEPTNO NUMBER(2),DNAME VARCHAR2(14),LOC VARCHAR2(13) );&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO DEPT VALUES (10, &amp;quot;ACCOUNTING&amp;quot;, &amp;quot;NEW YORK&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO DEPT VALUES (20, &amp;quot;RESEARCH&amp;quot;, &amp;quot;DALLAS&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO DEPT VALUES (30, &amp;quot;SALES&amp;quot;, &amp;quot;CHICAGO&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO DEPT VALUES (40, &amp;quot;OPERATIONS&amp;quot;, &amp;quot;BOSTON&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; create or replace type emp_type&lt;br /&gt;
  2  as object&lt;br /&gt;
  3  (empno       number(4),&lt;br /&gt;
  4   ename       varchar2(10),&lt;br /&gt;
  5   job         varchar2(9),&lt;br /&gt;
  6   mgr         number(4),&lt;br /&gt;
  7   hiredate    date,&lt;br /&gt;
  8   sal         number(7, 2),&lt;br /&gt;
  9   comm        number(7, 2)&lt;br /&gt;
 10  );&lt;br /&gt;
 11  /&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 emp_tab_type&lt;br /&gt;
  2  as table of emp_type&lt;br /&gt;
  3  /&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 dept_type&lt;br /&gt;
  2  as object&lt;br /&gt;
  3  ( deptno number(2),&lt;br /&gt;
  4    dname  varchar2(14),&lt;br /&gt;
  5    loc    varchar2(13),&lt;br /&gt;
  6    emps   emp_tab_type&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 view dept_or&lt;br /&gt;
  2  of dept_type&lt;br /&gt;
  3  with object identifier(deptno)&lt;br /&gt;
  4  as&lt;br /&gt;
  5  select deptno, dname, loc,&lt;br /&gt;
  6         cast ( multiset (&lt;br /&gt;
  7                 select empno, ename, job, mgr, hiredate, sal, comm&lt;br /&gt;
  8                   from emp&lt;br /&gt;
  9                  where emp.deptno = dept.deptno )&lt;br /&gt;
 10                as emp_tab_type )&lt;br /&gt;
 11    from dept&lt;br /&gt;
 12  /&lt;br /&gt;
View created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; declare&lt;br /&gt;
  2     l_emps  emp_tab_type;&lt;br /&gt;
  3  begin&lt;br /&gt;
  4      select p.emps into l_emps from dept_or p where deptno = 10;&lt;br /&gt;
  5&lt;br /&gt;
  6      for i in 1 .. l_emps.count&lt;br /&gt;
  7      loop&lt;br /&gt;
  8          l_emps(i).ename := lower(l_emps(i).ename);&lt;br /&gt;
  9      end loop;&lt;br /&gt;
 10&lt;br /&gt;
 11      update dept_or&lt;br /&gt;
 12         set emps = l_emps&lt;br /&gt;
 13       where deptno = 10;&lt;br /&gt;
 14  end;&lt;br /&gt;
 15  /&lt;br /&gt;
declare&lt;br /&gt;
*&lt;br /&gt;
ERROR at line 1:&lt;br /&gt;
ORA-01733: virtual column not allowed here&lt;br /&gt;
ORA-06512: at line 11&lt;br /&gt;
&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop type dept_type;&lt;br /&gt;
Type dropped.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop type emp_tab_type;&lt;br /&gt;
Type dropped.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop type emp_type;&lt;br /&gt;
Type dropped.&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; drop table dept;&lt;br /&gt;
Table dropped.&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>