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
| CREATE OR REPLACE TYPE rec_produit AS OBJECT (
CODE NUMBER,
DESCRIPTION VARCHAR2(1000 BYTE),
MONTANT NUMBER,
CONSTRUCTOR FUNCTION rec_produit RETURN SELF AS RESULT,
CONSTRUCTOR FUNCTION rec_produit(pCODE IN NUMBER) RETURN SELF AS RESULT,
CONSTRUCTOR FUNCTION rec_produit(pDESCRIPTION IN VARCHAR2) RETURN SELF AS RESULT,
CONSTRUCTOR FUNCTION rec_produit(pMONTANT IN NUMBER) RETURN SELF AS RESULT);
/
CREATE OR REPLACE TYPE BODY rec_produit
AS
CONSTRUCTOR FUNCTION rec_produit RETURN SELF AS RESULT
IS
BEGIN
RETURN;
END;
CONSTRUCTOR FUNCTION rec_produit(pCODE IN NUMBER) RETURN SELF AS RESULT
IS
BEGIN
self.code := pcode;
RETURN;
END;
CONSTRUCTOR FUNCTION rec_produit(pDESCRIPTION IN VARCHAR2) RETURN SELF AS RESULT
IS
BEGIN
self.DESCRIPTION := pDESCRIPTION;
RETURN;
END;
CONSTRUCTOR FUNCTION rec_produit(pMONTANT IN NUMBER) RETURN SELF AS RESULT
IS
BEGIN
self.MONTANT := pMONTANT;
RETURN;
END;
END;
/
CREATE OR REPLACE TYPE tab_produit AS vARRAY (100) OF REC_produit
/
CREATE OR REPLACE PACKAGE PKG_test
AS
procedure test;
END PKG_test;
/
CREATE OR REPLACE PACKAGE BODY PKG_test AS
PROCEDURE insertion ( mesDonnes in tab_produit ) IS
compteur NUMBER;
BEGIN
FOR compteur IN mesDonnes.first..mesDonnes.LAST
LOOP
INSERT INTO toto VALUES (mesDonnes(compteur).code,mesDonnes(compteur).description,mesDonnes(compteur).montant);
END LOOP;
COMMIT;
END insertion;
PROCEDURE test IS
compteur NUMBER := 1;
myTable tab_produit ;
BEGIN
myTable := tab_produit();
FOR compteur in 1..10
LOOP
myTable.extEND;
myTable(compteur) := rec_produit(null,null,null);
myTable(compteur).CODE := compteur;
myTable(compteur).DESCRIPTION := 'Description N.' || compteur;
myTable(compteur).MONTANT := compteur*100;
--insert into produit values (myTable(compteur).CODE,myTable(compteur).DESCRIPTION,myTable(compteur).MONTANT);
END LOOP;
insertion(myTable);
END TEST;
END PKG_test;
/ |
Partager