VARRAY of VARCHAR2 and Varray of number : varray « PL SQL « Oracle PL / SQL






VARRAY of VARCHAR2 and Varray of number

    
SQL>
SQL> create table product(
  2          product_id              integer           primary key
  3          ,price                  number(7,2)
  4          ,description            varchar2(75)
  5          ,onhand                 number(5,0)
  6          ,reorder                number(5,0)
  7          ,supplier_no            integer
  8  );

Table created.

SQL> insert into product(product_id, price, description, onhand, reorder)values (1,2.50,'Oracle',100,20);

1 row created.

SQL> insert into product(product_id, price, description, onhand, reorder)values (2,23.00,'SQL Server',null,null);

1 row created.

SQL> insert into product(product_id, price, description, onhand, reorder)values (3,null,'MySQL',null,null);

1 row created.

SQL> insert into product(product_id, price, description, onhand, reorder)values (4,1.50,'DB2',50,10);

1 row created.

SQL> insert into product(product_id, price, description, onhand, reorder)values (5,10.50,'Java',100,20);

1 row created.

SQL> insert into product(product_id, price, description, onhand, reorder)values (6,45.00,'C++',null,null);

1 row created.

SQL> insert into product(product_id, price, description, onhand, reorder)values (7,19.99,'Javascript',3,5);

1 row created.

SQL> insert into product(product_id, price, description, onhand, reorder)values (8,4.50,'Ruby',null,null);

1 row created.

SQL>
SQL> CREATE OR REPLACE PROCEDURE p_add_prod (v_supplier IN number, v_ctr IN number)
  2  AS
  3     v_loop  number := 1;
  4     v_type_ctr      number := 1;
  5     v_reorder       product.reorder%TYPE;
  6
  7     TYPE Prod_Names IS VARRAY(10) OF VARCHAR2(75);
  8     v_names Prod_Names := Prod_Names('Widget ','Gadget');
  9
 10     TYPE Prod_Prices IS VARRAY(10) OF NUMBER(7,2);
 11     v_prices        Prod_prices := Prod_prices(2,2.25,3,4.2,6,12.4,11.7,9.25,5,7.5);
 12
 13     TYPE Prod_Onhand IS VARRAY(10) OF NUMBER;
 14     v_onhand        Prod_Onhand := Prod_Onhand(70,20,10,40,30,50,60,80,90,55);
 15
 16  begin
 17     WHILE v_loop <= v_ctr LOOP
 18             IF v_type_ctr > 10 THEN
 19                     v_type_ctr := 1;
 20             END IF;
 21             IF v_onhand(v_type_ctr) >= 30 THEN
 22                v_reorder := v_onhand(v_type_ctr) - 10;
 23             ELSE
 24                v_reorder := v_onhand(v_type_ctr) - 5;
 25             END IF;
 26
 27             INSERT INTO product (PRODUCT_ID, PRICE, DESCRIPTION, ONHAND, REORDER, SUPPLIER_NO)
 28             VALUES (11111, v_prices(v_type_ctr), v_names(v_type_ctr),
 29                     v_onhand(v_type_ctr), v_reorder, v_supplier);
 30
 31             v_loop := v_loop + 1 ;
 32             v_type_ctr := v_type_ctr + 1;
 33
 34     END LOOP;
 35  end;
 36  /

Procedure created.

SQL> show error
No errors.
SQL>
SQL> exec p_add_prod(1,2);
BEGIN p_add_prod(1,2); END;

*
ERROR at line 1:
ORA-00001: unique constraint (JAVA2S.SYS_C006114) violated
ORA-06512: at "JAVA2S.P_ADD_PROD", line 27
ORA-06512: at line 1


SQL>
SQL> select * from product;
PRODUCT_ID      PRICE DESCRIPTION                                                                     ONHAND    REORDER SUPPLIER_NO
---------- ---------- --------------------------------------------------------------------------- ---------- ---------- -----------
         1        2.5 Oracle                                                                             100         20
         2         23 SQL Server
         3            MySQL
         4        1.5 DB2                                                                                 50         10
         5       10.5 Java                                                                               100         20
         6         45 C++
         7      19.99 Javascript                                                                           3          5
         8        4.5 Ruby

8 rows selected.

SQL>
SQL>
SQL> drop table product;

Table dropped.

SQL>
SQL> --

   
    
    
  








Related examples in the same category

1.Varray constructors.
2.legal and illegal varray assignments.
3.TYPE Strings IS VARRAY(5) OF VARCHAR2(10)
4.Create a varray based on user defined type
5.Store pre-defined constants in VARRAY
6.Creating and Using VARRAYs
7.Query a stored varray.
8.Table of numbers and varray of numbers
9.Initialize the array and create two entries using the constructor
10.Reference elements in varray
11.assignments to varray elements, and the ORA-6532 and ORA-6533 errors.
12.ORA-06533: Subscript beyond count
13.Compare two varray variables
14.Constructs a two varrays and one nested table type in the database
15.Control varray index with if statement
16.Create type prices with a varray of number
17.Declare the varray with null values.
18.Declaring a VARRAY of scalar variable
19.Define a varray of integer with 3 rows
20.Define a varray of twelve strings.
21.Define a varray with a null element constructor and extends it one element at a time by a formula
22.Define a varray with a null element constructor and extends it one element at a time.
23.Define a varray with a three element constructor of null elements and attempt to populate it beyond three elements.
24.Define a varray with a three element constructor of null elements.
25.Hard code value in varray and use for loop to insert them to a table
26.Nested varray
27.Reference varray.count in for loop
28.Store 12 months in varray of string
29.Use table() function to display varray type column
30.exceeded maximum VARRAY limit
31.Assign values to subscripted members of the varray.
32.Check the size of a varray
33.Declare an array initialized as a no-element collection.
34.Extend with null element to the maximum limit size.
35.Initialization and assignment with a numeric index value to an associative array.
36.Initialization and assignment with a unique string index value to an associative array.
37.Associative array example
38.Assigns a value to the indexed value.
39.Avoid traversing an associative array where no elements are initialized.
40.Subscript index values begin at 1, not 0