Skip to Main Content

SQL & PL/SQL

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

need help to resolve this issue

NuhaArifApr 27 2013 — edited May 28 2013
can someone help me achive the same results using sql.
CREATE TABLE OW_SHIP_DET (SL_PM_CODE VARCHAR2(12),SL_DESC VARCHAR2(20), SL_WT NUMBER,SL_QTY NUMBER);

insert into ow_ship_det(sl_pm_code,sl_desc,sl_wt,sl_qty) values ('A','H170',15000,300); 
insert into ow_ship_det(sl_pm_code,sl_desc,sl_wt,sl_qty) values ('B','H170',15000,300);  
insert into ow_ship_det(sl_pm_code,sl_desc,sl_wt,sl_qty) values ('C','H170',10000,300); 
insert into ow_ship_det(sl_pm_code,sl_desc,sl_wt,sl_qty) values ('D','H170',10000,300); 
insert into ow_ship_det(sl_pm_code,sl_desc,sl_wt,sl_qty) values ('E','I100',25000,700); 
insert into ow_ship_det(sl_pm_code,sl_desc,sl_wt,sl_qty) values ('F','I100',25000,200); 
insert into ow_ship_det(sl_pm_code,sl_desc,sl_wt,sl_qty) values ('G','J100',15000,200); 
insert into ow_ship_det(sl_pm_code,sl_desc,sl_wt,sl_qty) values ('H','J100',15000,200); 
insert into ow_ship_det(sl_pm_code,sl_desc,sl_wt,sl_qty) values ('I','J100',11000,200); 
insert into ow_ship_det(sl_pm_code,sl_desc,sl_wt,sl_qty) values ('J','J100',11000,200); 

commit;

CREATE TABLE OS_BATCH
(
OB_BATCH VARCHAR2(12 BYTE),
OB_PM_CODE VARCHAR2(12 BYTE),
OB_DESC VARCHAR2(30 BYTE),
OB_WT NUMBER,
OB_QTY NUMBER
)

--The procedure what i wrote is 

DECLARE
CURSOR c1
IS
SELECT sl_desc, SUM (sl_wt) t_wt, SUM (sl_qty) t_att,
CEIL (GREATEST (SUM (sl_wt) / 50000, SUM (sl_qty) / 1000)) cnt
FROM ow_ship_det
GROUP BY sl_desc;

CURSOR c2 (p_desc VARCHAR2)
IS
SELECT sl_pm_code, sl_desc, sl_wt, sl_qty
FROM ow_ship_det
WHERE sl_desc = p_desc
ORDER BY sl_wt DESC, sl_pm_code DESC;

CURSOR c3
IS
select LPAD ( nvl (max (to_number (nvl (ob_batch, '0'))), 0)+1,4,'0')
AS NEW_BATCH
from os_batch;

no_of_batch_req NUMBER;
no_of_batch NUMBER;
last_batch_no VARCHAR2 (5);
new_batch_no VARCHAR2 (5);
first_batch_in_prof VARCHAR2 (5);
BEGIN
IF c3%ISOPEN
THEN
CLOSE c3;
END IF;

OPEN c3;

FETCH c3
INTO last_batch_no;

CLOSE c3;

new_batch_no := last_batch_no;
first_batch_in_prof := last_batch_no;

FOR i IN c1
LOOP
no_of_batch_req := i.cnt;
no_of_batch := 1;

FOR j IN c2 (i.sl_desc)
LOOP
INSERT INTO os_batch
(ob_batch, ob_pm_code, ob_desc, ob_wt,
ob_qty
)
VALUES (new_batch_no, j.sl_pm_code, j.sl_desc, j.sl_wt,
j.sl_qty
);

IF no_of_batch = no_of_batch_req
THEN
no_of_batch := 1;
new_batch_no := first_batch_in_prof;
ELSE
no_of_batch := no_of_batch + 1;
new_batch_no := LPAD (((new_batch_no + 1)), 4, '0');
END IF;
END LOOP;

new_batch_no := LPAD (((first_batch_in_prof + i.cnt)), 4, '0');
first_batch_in_prof := new_batch_no;
END LOOP;

COMMIT;
END;

OB_BATCH OB_PM_CODE OB_DESC OB_WT OB_QTY
0001                  B            H170    15000   300
0002                  A            H170    15000  300
0001                  D            H170    10000  300
0002                  C            H170    10000  300
0003                  F            I100    25000   200
0003                  E            I100    25000  700
0004                  H           J100    15000  200
0005                  G           J100    15000  200
0004                  J            J100    11000  200
0005                  I            J100    11000  200
Edited by: 998476 on Apr 27, 2013 3:06 AM
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Jun 25 2013
Added on Apr 27 2013
39 comments
2,078 views