Define function to get the first value in varray : VARRAY Column « Collections « Oracle PL/SQL Tutorial






SQL>
SQL> column numlist format a60
SQL>
SQL>
SQL> create table employees(
  2    empno      NUMBER(4)
  3  , ename      VARCHAR2(8)
  4  , init       VARCHAR2(5)
  5  , job        VARCHAR2(8)
  6  , mgr        NUMBER(4)
  7  , bdate      DATE
  8  , msal       NUMBER(6,2)
  9  , comm       NUMBER(6,2)
 10  , deptno     NUMBER(2) ) ;

Table created.

SQL>
SQL>
SQL> insert into employees values(1,'Jason',  'N',  'TRAINER', 2,   date '1965-12-18',  800 , NULL,  10);

1 row created.

SQL> insert into employees values(2,'Jerry',  'J',  'SALESREP',3,   date '1966-11-19',  1600, 300,   10);

1 row created.

SQL> insert into employees values(3,'Jord',   'T' , 'SALESREP',4,   date '1967-10-21',  1700, 500,   20);

1 row created.

SQL> insert into employees values(4,'Mary',   'J',  'MANAGER', 5,   date '1968-09-22',  1800, NULL,  20);

1 row created.

SQL> insert into employees values(5,'Joe',    'P',  'SALESREP',6,   date '1969-08-23',  1900, 1400,  30);

1 row created.

SQL> insert into employees values(6,'Black',  'R',  'MANAGER', 7,   date '1970-07-24',  2000, NULL,  30);

1 row created.

SQL> insert into employees values(7,'Red',    'A',  'MANAGER', 8,   date '1971-06-25',  2100, NULL,  40);

1 row created.

SQL> insert into employees values(8,'White',  'S',  'TRAINER', 9,   date '1972-05-26',  2200, NULL,  40);

1 row created.

SQL> insert into employees values(9,'Yellow', 'C',  'DIRECTOR',10,  date '1973-04-27',  2300, NULL,  20);

1 row created.

SQL> insert into employees values(10,'Pink',  'J',  'SALESREP',null,date '1974-03-28',  2400, 0,     30);

1 row created.

SQL>
SQL>
SQL>
SQL> create table e as select empno, ename, init, mgr, deptno from employees;

Table created.

SQL>
SQL>
SQL> create or replace type numberVarray as varray(4) of varchar2(20);
  2  /

Type created.

SQL>
SQL>
SQL> alter table e add (numlist numberVarray);

Table altered.

SQL>
SQL> describe e;
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 EMPNO                                              NUMBER(4)
 ENAME                                              VARCHAR2(8)
 INIT                                               VARCHAR2(5)
 MGR                                                NUMBER(4)
 DEPTNO                                             NUMBER(2)
 NUMLIST                                            NUMBERVARRAY

SQL>
SQL>
SQL> update e set numlist = numberVarray('4231','06-12345678');

10 rows updated.

SQL>
SQL>
SQL> create or replace function ext(p_varray_in numberVarray)
  2  return varchar2
  3  is
  4    v_ext varchar2(20);
  5  begin
  6    v_ext := p_varray_in(1);
  7    return v_ext;
  8  end;
  9  /

Function created.

SQL>
SQL> col ext(numlist) format a12
SQL>
SQL> select ename, init, ext(numlist) from   e;

     last_name       INIT  EXT(NUMLIST)
-------------------- ----- ------------
Jason                N     4231
Jerry                J     4231
Jord                 T     4231
Mary                 J     4231
Joe                  P     4231
Black                R     4231
Red                  A     4231
White                S     4231
Yellow               C     4231
Pink                 J     4231

10 rows selected.

SQL>
SQL> drop table e;

Table dropped.

SQL>
SQL> drop table employees;

Table dropped.








26.3.VARRAY Column
26.3.1.Stored VARRAYS
26.3.2.Using a Varray Type to Define a Column in a Table
26.3.3.Display the structure of a table with a valarray column
26.3.4.Populating a Varray with Elements
26.3.5.Selecting Varray Elements
26.3.6.Modifying Varray Elements
26.3.7.Set empty varray value
26.3.8.Define function to get the first value in varray
26.3.9.Insert on whole VARRAYS
26.3.10.UPDATE on varray column in PL/SQL block
26.3.11.UPDATE on varray column
26.3.12.DELETE on varray column
26.3.13.SELECT into with varray column