-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathBREAK_UNIT_PRICE.~sql
More file actions
135 lines (109 loc) · 3.31 KB
/
BREAK_UNIT_PRICE.~sql
File metadata and controls
135 lines (109 loc) · 3.31 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
--ORDER.status_code = sh_sh_status
--status_code = sh_status
--tot_sales = tot_orders
--company_id_in = rm.rm_cust
--sales_cur = order_cur
var cust varchar2(20)
exec :cust := 'WAGVICAG'
var status NUMBER
EXEC :status := 0
var start_date varchar2(20)
exec :start_date := To_Date('1-Apr-2014')
var order_limit NUMBER
EXEC :order_limit := 10;
var break_price NUMBER
EXEC :break_price := 0;
var s_query VARCHAR2(200)
EXEC :s_query := 'SELECT To_Number(vUnitPrice) FROM Tmp_Admin_Data_BreakPrices WHERE vIIStock = stock_in AND vIICust = rm_cust_in';
CREATE OR REPLACE FUNCTION BREAK_UNIT_PRICE
( rm_cust_in IN rm.RM_GROUP_CUST%TYPE,
stock_in IN Tmp_Admin_Data_BreakPrices.vIIStock%TYPE)
RETURN NUMBER
IS
/*Internal UPPER status code */
--status_int sh.sh_status%TYPE:=Upper(status_in);
/*Parameterised cursor returns total orders */
CURSOR break_price_cur IS
SELECT To_Number(vUnitPrice) FROM Tmp_Admin_Data_BreakPrices WHERE vIIStock = stock_in AND vIICust = rm_cust_in;
/*Return value for function */
return_value NUMBER;
BEGIN
OPEN break_price_cur;
FETCH break_price_cur INTO return_value;
IF break_price_cur%NOTFOUND
THEN
CLOSE break_price_cur;
RETURN NULL;
ELSE
CLOSE break_price_cur;
RETURN return_value;
END IF;
END BREAK_UNIT_PRICE;
CREATE OR REPLACE FUNCTION tot_orders
( rm_cust_in IN rm.rm_cust%TYPE,
status_in IN sh.sh_status%TYPE:=NULL,
sh_add_in IN sh.sh_add_date%TYPE)
RETURN NUMBER
IS
/*Internal UPPER status code */
status_int sh.sh_status%TYPE:=Upper(status_in);
/*Parameterised cursor returns total orders */
CURSOR order_cur (status_in IN sh.sh_status%TYPE) IS
SELECT Count(SH_ORDER)
FROM SH
WHERE sh.sh_cust = rm_cust_in
AND sh_status LIKE status_in
AND sh.sh_add_date >= sh_add_in; --'01-APR-2014';
/*Return value for function */
return_value NUMBER;
BEGIN
OPEN order_cur (status_int);
FETCH order_cur INTO return_value;
IF order_cur%NOTFOUND
THEN
CLOSE order_cur;
RETURN NULL;
ELSE
CLOSE order_cur;
RETURN return_value;
END IF;
END tot_orders;
PROCEDURE GROUP_CUST_GET AS
(gc_customer_in IN rm.rm_cust%TYPE)
CURSOR gc_cur IS
SELECT r.rm_cust, r.rm_name
FROM rm r
WHERE r.rm_cust = gc_customer_in
ORDER BY r.rm_cust;
gc_rec gc_cur%ROWTYPE;
BEGIN
OPEN gc_cur;
FETCH gc_cur INTO gc_rec;
WHILE(gc_cur%FOUND)
LOOP
DBMS_OUTPUT.PUT_LINE(gc_rec.rm_cust || ' ' || gc_rec.rm_name);
FETCH gc_cur INTO gc_rec;
END LOOP;
CLOSE gc_cur;
END GROUP_CUST_GET;
create or replace PROCEDURE OWUSER5(c_test out sys_refcursor) AS
BEGIN
open c_test for
select vVM.vm_profile, vVM.vm_name, vVM.vm_surname, vVU.vu_cust, vVU.vu_address
from PWIN175.vm vVM
inner join PWIN175.vu vVU on vVU.vu_profile = vVM.vm_profile
where vVM.vm_profile LIKE '19%';
END OWUSER5;
SELECT II_BREAK_LCL ,
CASE
WHEN BREAK_UNIT_PRICE('WAGVICAG','500400') > :order_limit THEN BREAK_UNIT_PRICE('WAGVICAG','500400')
ELSE NULL
END AS "Break Price"
FROM II
WHERE II_CUST = :cust
AND II_STOCK = '500400'
var breakprice NUMBER
exec SELECT BREAK_UNIT_PRICE('WAGVICAG','500400') INTO :breakprice FROM DUAL;
var order_totals2 NUMBER
EXEC :order_totals2 := tot_orders(:cust,:status,:start_date);
SELECT * FROM II WHERE II_CUST = :cust