[Oracle] Probleme avec les packages

Probleme avec les packages [Oracle] - Divers - Programmation

Marsh Posté le 26-11-2002 à 16:45:58    

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 :
  1. SET ECHO ON
  2. SPOOL Statistiques_verif
  3. CREATE PACKAGE Statistiques IS
  4. FUNCTION Meilleur_produit (NumCat IN NUMBER)
  5. RETURN (Varchar , Integer) ;
  6. FUNCTION Stat_salaires ()
  7. RETURN (Integer, Integer, Integer) ;
  8. END Statistiques ;
  9. CREATE PACKAGE BODY Statistiques IS
  10. FUNCTION Meilleur_produit (NumCat IN NUMBER)
  11. RETURN (varchar , integer) IS
  12. Nom_Produit varchar , Num_Produit integer;
  13. BEGIN
  14.  CURSOR Produits_associes (NC integer) IS
  15.  SELECT P.Nom, P.NumProd, D.Quantite
  16.  FROM Produit P, DetailCommande D
  17.  WHERE P.NumCat = NC
  18.  AND P.NumProd = D.NumProd
  19.  ORDER BY P.NumProd;
  20.  e Produits_associes%ROWTYPE ;
  21.  Max_quantite DetailCommande.Quantite%TYPE ;
  22.  Somme_quantite DetailCommande.Quantite%TYPE ;
  23.  BEGIN
  24.   Max_quantite:=0;
  25.   Somme_quantite:=0;
  26.   OPEN Produits_associes(NumCat);
  27.   FETCH Produits_associes INTO e;
  28.   NumProd_precedent:=e.NumProd;
  29.   NumProd_precedent:=e.Nom;
  30.   WHILE (Produits_associes%FOUND)
  31.    LOOP
  32.    IF (e.NumProd=NumProd_precedent)
  33.    THEN Somme_quantite:=Somme_quantite+e.Quantite;
  34.    ELSE
  35.     Somme_quantite:=e.Quantite;
  36.     IF (Somme_quantite>Max_quantite)
  37.     THEN
  38.     Max_quantite:=Somme_quantite;
  39.     NumProd_precedent:=e.NumProd;
  40.     NumProd_precedent:=e.Nom;
  41.     END IF;
  42.     FETCH Produits_associes INTO e;
  43.    END IF;
  44.    END LOOP ;
  45.   CLOSE Produits_associes;
  46.  END;
  47.  RETURN (NomProd_precedent, NumProd_precedent) ;
  48. END;
  49. FUNCTION Stat_salaires ()
  50. RETURN (integer, integer, integer) IS
  51. Somme_salaires integer, Nbr_employes integer, Rapport integer ;
  52. BEGIN
  53.  CURSOR Ens_vendeurs  IS
  54.  SELECT E.NumEmp, E.DateEmbauche, E.SalaireBase, V.NbArticlesVendus
  55.  FROM Vendeur V, Employe E
  56.  WHERE V.NumEmp = E.NumEmp
  57.  ORDER BY E.NumEmp asc;
  58.  CURSOR Ens_autres_employes  IS
  59.  SELECT E.NumEmp, E.DateEmbauche, E.SalaireBase
  60.  FROM Employe E
  61.  WHERE E.Fonction NOT LIKE 'Vendeur'
  62.  ORDER BY E.NumEmp asc;
  63.  e Ens_vendeurs%ROWTYPE ;
  64.  f Ens_autres_employes%ROWTYPE ;
  65.  SELECT COUNT(*) INTO Nbr_employes
  66.  FROM EMPLOYE;
  67.  BEGIN
  68.   Somme_salaires:=0;
  69.   Rapport:=0;
  70.   OPEN Ens_vendeurs ;
  71.   FETCH Ens_vendeurs INTO e;
  72.   WHILE (Ens_vendeurs%FOUND)
  73.    LOOP
  74.    Somme_salaires:=Somme_salaires + 40*(MONTHS_BETWEEN(SYSDATE,e.DateEmbauche)/12) + e.SalaireBase
  75.       + 15*(e.NbArticlesVendus/10) ;
  76.    END LOOP ;
  77.   CLOSE Ens_vendeurs;
  78.   OPEN Ens_autres_employes ;
  79.   FETCH Ens_autres_employes  INTO e;
  80.   WHILE (Ens_autres_employes %FOUND)
  81.    LOOP
  82.    Somme_salaires:=Somme_salaires + 40*(MONTHS_BETWEEN(SYSDATE,e.DateEmbauche)/12) + e.SalaireBase;
  83.    END LOOP ;
  84.   CLOSE Ens_autres_employes ;
  85.  END;
  86.  RETURN (Somme_salaires, NbrEmployes, Somme_salaires/NbrEmployes) ;
  87. END;
  88. END Statistiques ;
  89. SPOOL OFF
  90. SELECT *
  91. FROM user_errors
  92. WHERE name='STATISTIQUES' ;

Reply

Marsh Posté le 26-11-2002 à 16:45:58   

Reply

Marsh Posté le 26-11-2002 à 16:49:31    

START Package.sql


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed