rick@r coin coin coin | J'ai écrit mon package dans un fichier Package.sql mais qd j'essaie
de le lancer pour le creer sous oracle il me recopie les lignes de code
de mon fichier sans rien faire , il ne revient meme pas au prompt de sql.
Alors je voudrais savoir comment on lance un script .
J'ai essayé d'ouvrir mon fichier depuis sql et l'exécuter avec @Package,
j'ai essayé avec la commande start [chemin du fichier]\Package.sql.
Mais le fait qu'il ne revienne pas au prompt me semble bizarre ...
Voila mon code :
Code :
- SET ECHO ON
- SPOOL Statistiques_verif
- CREATE PACKAGE Statistiques IS
- FUNCTION Meilleur_produit (NumCat IN NUMBER)
- RETURN (Varchar , Integer) ;
- FUNCTION Stat_salaires ()
- RETURN (Integer, Integer, Integer) ;
- END Statistiques ;
- CREATE PACKAGE BODY Statistiques IS
- FUNCTION Meilleur_produit (NumCat IN NUMBER)
- RETURN (varchar , integer) IS
- Nom_Produit varchar , Num_Produit integer;
- BEGIN
- CURSOR Produits_associes (NC integer) IS
- SELECT P.Nom, P.NumProd, D.Quantite
- FROM Produit P, DetailCommande D
- WHERE P.NumCat = NC
- AND P.NumProd = D.NumProd
- ORDER BY P.NumProd;
- e Produits_associes%ROWTYPE ;
- Max_quantite DetailCommande.Quantite%TYPE ;
- Somme_quantite DetailCommande.Quantite%TYPE ;
- BEGIN
- Max_quantite:=0;
- Somme_quantite:=0;
- OPEN Produits_associes(NumCat);
- FETCH Produits_associes INTO e;
- NumProd_precedent:=e.NumProd;
- NumProd_precedent:=e.Nom;
- WHILE (Produits_associes%FOUND)
- LOOP
- IF (e.NumProd=NumProd_precedent)
- THEN Somme_quantite:=Somme_quantite+e.Quantite;
- ELSE
- Somme_quantite:=e.Quantite;
- IF (Somme_quantite>Max_quantite)
- THEN
- Max_quantite:=Somme_quantite;
- NumProd_precedent:=e.NumProd;
- NumProd_precedent:=e.Nom;
- END IF;
- FETCH Produits_associes INTO e;
- END IF;
- END LOOP ;
- CLOSE Produits_associes;
- END;
- RETURN (NomProd_precedent, NumProd_precedent) ;
- END;
- FUNCTION Stat_salaires ()
- RETURN (integer, integer, integer) IS
- Somme_salaires integer, Nbr_employes integer, Rapport integer ;
- BEGIN
- CURSOR Ens_vendeurs IS
- SELECT E.NumEmp, E.DateEmbauche, E.SalaireBase, V.NbArticlesVendus
- FROM Vendeur V, Employe E
- WHERE V.NumEmp = E.NumEmp
- ORDER BY E.NumEmp asc;
- CURSOR Ens_autres_employes IS
- SELECT E.NumEmp, E.DateEmbauche, E.SalaireBase
- FROM Employe E
- WHERE E.Fonction NOT LIKE 'Vendeur'
- ORDER BY E.NumEmp asc;
- e Ens_vendeurs%ROWTYPE ;
- f Ens_autres_employes%ROWTYPE ;
- SELECT COUNT(*) INTO Nbr_employes
- FROM EMPLOYE;
- BEGIN
- Somme_salaires:=0;
- Rapport:=0;
- OPEN Ens_vendeurs ;
- FETCH Ens_vendeurs INTO e;
- WHILE (Ens_vendeurs%FOUND)
- LOOP
- Somme_salaires:=Somme_salaires + 40*(MONTHS_BETWEEN(SYSDATE,e.DateEmbauche)/12) + e.SalaireBase
- + 15*(e.NbArticlesVendus/10) ;
- END LOOP ;
- CLOSE Ens_vendeurs;
- OPEN Ens_autres_employes ;
- FETCH Ens_autres_employes INTO e;
- WHILE (Ens_autres_employes %FOUND)
- LOOP
- Somme_salaires:=Somme_salaires + 40*(MONTHS_BETWEEN(SYSDATE,e.DateEmbauche)/12) + e.SalaireBase;
- END LOOP ;
- CLOSE Ens_autres_employes ;
- END;
- RETURN (Somme_salaires, NbrEmployes, Somme_salaires/NbrEmployes) ;
- END;
- END Statistiques ;
- SPOOL OFF
- SELECT *
- FROM user_errors
- WHERE name='STATISTIQUES' ;
|
|