Store pre-defined constants in VARRAY
SQL>
SQL> create table ord(
2 order_no integer
3 ,cust_no integer
4 ,order_date date not null
5 ,total_order_price number(7,2)
6 ,deliver_date date
7 ,deliver_time varchar2(7)
8 ,payment_method varchar2(2)
9 ,emp_no number(3,0)
10 ,deliver_name varchar2(35)
11 ,gift_message varchar2(100)
12 );
Table created.
SQL>
SQL>
SQL> CREATE OR REPLACE PROCEDURE p_add_orders (v_ord_ctr IN number, v_item_ctr IN number,
2 v_cust_no IN number, v_emp_no IN number)
3 AS
4 v_loop number := 1;
5 v_type_ctr number := 1;
6 v_curr_order ord.order_no%TYPE;
7
8 TYPE PayMethods IS VARRAY(10) OF VARCHAR2(2);
9 v_paymethods PayMethods := PayMethods('VS','CA','VG','AX','CK','MC','DI','CA','CK','VS');
10
11 TYPE Orderdates IS VARRAY(10) OF DATE;
12 v_odates Orderdates := Orderdates(add_months(sysdate, -45),
13 add_months(sysdate, -14),
14 add_months(sysdate, -22),
15 add_months(sysdate, -38),
16 add_months(sysdate, -46),
17 add_months(sysdate, -59),
18 add_months(sysdate, -19),
19 add_months(sysdate, -11),
20 add_months(sysdate, -74),
21 add_months(sysdate, -6));
22 begin
23 WHILE v_loop <= v_ord_ctr LOOP
24 IF v_type_ctr > 10 THEN
25 v_type_ctr := 1;
26 END IF;
27
28 INSERT INTO ord (ORDER_NO, CUST_NO, ORDER_DATE, TOTAL_ORDER_PRICE, DELIVER_DATE,
29 PAYMENT_METHOD, EMP_NO)
30 VALUES (999, v_cust_no, v_odates(v_type_ctr), 0, v_odates(v_type_ctr) + 10,
31 v_paymethods(v_type_ctr), v_emp_no );
32
33 SELECT 11111
34 INTO v_curr_order
35 FROM dual ;
36
37 v_loop := v_loop + 1 ;
38 v_type_ctr := v_type_ctr + 1 ;
39 END LOOP;
40 end;
41 /
Procedure created.
SQL>
SQL> show error
No errors.
SQL>
SQL>
SQL> drop table ord;
Table dropped.
SQL>
SQL>
SQL> --
Related examples in the same category