Anda di halaman 1dari 3

create or replace

PACKAGE PACKAGECHEM AS

1...)
CREATE OR REPLACE PROCEDURE CHEM1
(
P_CHEMICALNAME VARCHAR2
)
IS
V_TOT CHEM_TAB;
V_TOTAL NUMBER;
CURSOR CHEMICAL IS SELECT * FROM TABLE(SELECT TOTALCOST FROM CHEM WHERE
CHEMICALNAME=P_CHEMICALNAME);
BEGIN
V_TOTAL :=0;

OPEN CHEMICAL;
LOOP
FETCH CHEMICAL BULK COLLECT INTO V_TOT LIMIT 100;
EXIT WHEN CHEMICAL%NOTFOUND;
END LOOP;
CLOSE CHEMICAL;

--SELECT TOTALCOST INTO V_TOT FROM CHEM;

--OPEN CHEMICAL;
--FETCH CHEMICAL INTO V_TOT;
FOR I IN 1..V_TOT.COUNT
LOOP
V_TOTAL :=V_TOTAL +(V_TOT(I).QTY *V_TOT(I).PRICE);

END LOOP;
CLOSE CHEMICAL ;
DBMS_OUTPUT.PUT_LINE('V_TOTAL' ||CHR(9)||V_TOTAL );
END CHEM1;
-----------------------------------------------------------------------------------
-------------------------------------------------------------------

2...)CREATE OR REPLACE PROCEDURE CHEM_INFO


(
P_CHEMICALNAME CHEMICAL_INFO.CHEMICAL_NAME%TYPE
)
IS
CURSOR CHEM_INFO IS SELECT
O.ORDER_ID,O.ORDER_DATE,O.CHEMICAL_ID,CL.CLIENT_ID,CL.CLIENT_NAME,O.QTY,O.DELIVERY_
DATE,C.CHEMICAL_NAME
FROM ORDER_INFO O,CHEMICAL_INFO C,CLIENT_INFO CL
WHERE
O.CHEMICAL_ID=C.CHEMICAL_ID
AND
O.CLIENT_ID=CL.CLIENT_ID;
V_CHEMICAL_ID CHEMICAL_INFO.CHEMICAL_ID%TYPE;
BEGIN
DBMS_OUTPUT.PUT_LINE('CHEMICAL ID'||CHR(9)||'CHEMICAL NAME');
SELECT CHEMICAL_ID INTO V_CHEMICAL_ID FROM CHEMICAL_INFO WHERE
CHEMICAL_NAME=P_CHEMICALNAME ;
DBMS_OUTPUT.PUT_LINE(V_CHEMICAL_ID||CHR(9)||P_CHEMICALNAME);
DBMS_OUTPUT.PUT_LINE('ORDER ID'||CHR(9)||'CLIENT ID'||CHR(9)||'QTY'||
CHR(9)||'DELIVERY DATE'||CHR(9)||'CLIENT NAME');
FOR I IN CHEM_INFO
LOOP
DBMS_OUTPUT.PUT_LINE(I.ORDER_ID||CHR(9)||I.CLIENT_ID||CHR(9)||I.QTY||CHR(9)||
I.DELIVERY_DATE||CHR(9)||I.CLIENT_NAME);
END LOOP;
EXCEPTION
WHEN NO_DATA_FOUND THEN
DBMS_OUTPUT.PUT_LINE('ENTER VALID DETAILS');
END CHEM_INFO;
-----------------------------------------------------------------------------------
---------------------------------------
--INVOKING THE PROCEDURE
DECLARE
V_CHEMICALNAME CHEMICAL_INFO.CHEMICAL_NAME%TYPE;
BEGIN
V_CHEMICALNAME:='&NAME';
CHEM_INFO(V_CHEMICALNAME);
END;

-----------------------------------------
GIVE INPUT NAME :- MANNITOL
-----------------------------------------------------------------------------------
----------------------------------------------
3..)CREATE OR REPLACE TYPE TOTAL_COST AS OBJECT
(
QTY NUMBER,
PRICE NUMBER
);
-----------------------------------------------------------------------------------
--------------------------------------
DECLARE
TYPE chem_tab iS TABLE OF TOTAL_COST INDEX BY BINARY_INTEGER;
BEGIN

END;
-----------------------------------------------------------------------------------
--------------------------------------
CREATE TABLE CHEM
(
CHEMICALID VARCHAR2(20),
CHEMICALNAME VARCHAR2(30),
TOTALCOST chem_tab
);
-----------------------------------------------------------------------------------
------------------------------------
INSERT INTO CHEM
VALUES('CH1','ABC',CHEM_TAB(TOTAL_COST(10,20),TOTAL_COST(20,20),TOTAL_COST(15,20)))
;
INSERT INTO CHEM
VALUES('CH2','YYZ',CHEM_TAB(TOTAL_COST(10,20),TOTAL_COST(20,20),TOTAL_COST(15,20)))
;

-----------------------------------------------------------------------------------
----------------------------------
CREATE OR REPLACE PROCEDURE CHEM1
(
P_CHEMICALNAME VARCHAR2
)
IS
V_TOT CHEM_TAB;
V_TOTAL NUMBER;
CURSOR CHEMICAL IS SELECT * FROM TABLE(SELECT TOTALCOST FROM CHEM WHERE
CHEMICALNAME=P_CHEMICALNAME);
BEGIN
V_TOTAL :=0;

--OPEN CHEMICAL;
-- LOOP
--FETCH CHEMICAL BULK COLLECT INTO V_TOT LIMIT 100;
-- EXIT WHEN CHEMICAL%NOTFOUND;
--END LOOP;
--CLOSE CHEMICAL;

SELECT TOTALCOST BULK COLLECT INTO V_TOT FROM CHEM;

--OPEN CHEMICAL;
--FETCH CHEMICAL INTO V_TOT;
FOR I IN 1..V_TOT.COUNT
LOOP
V_TOTAL :=V_TOTAL +(V_TOT(I).QTY *V_TOT(I).PRICE);

END LOOP;
CLOSE CHEMICAL ;
DBMS_OUTPUT.PUT_LINE('V_TOTAL' ||CHR(9)||V_TOTAL );
END CHEM1;

-----------------------------------------------------------------------------------
----------
--error
DECLARE
V_CHEMICALNAME VARCHAR2(30);
BEGIN
V_CHEMICALNAME:='&NAME';
CHEM1(V_CHEMICALNAME);
END;

END PACKAGECHEM;

Anda mungkin juga menyukai