procédures stockées Oracle

procédures stockées Oracle - SQL/NoSQL - Programmation

Marsh Posté le 24-03-2005 à 19:40:23    

Bonjour
j'ai un petit souci avec mes procédures stockées  
Environnement Oracle9i à l'école  
TableSpace temp
 
j'ai un package où il y a 1 fonction et 1 procedure
(la proc appelle la fonction)
et une procedure stockée (qui appelle la proc du package)
 
Mon souci : je compile mon package et ma proc. Je teste OK cela fonctionne.
Je quitte ma session , je me reconnecte (à priori mes procs sont tjs là) je lance ma proc : elle s'éxécute mais n'affiche rien ... :??:  
 
sources :  
 
SET SERVEROUTPUT ON
CREATE OR REPLACE PACKAGE BODY pack
IS
--fonction retournant le nombre de dragons
FUNCTION nbDragons RETURN NUMBER IS
 
 
 --variables
 nb  NUMBER;
 
 --debut
 BEGIN
  SELECT COUNT(*) INTO nb
  FROM NOURRITURES;
   
  RETURN nb;
 
 END nbDragons;
 
PROCEDURE affiche IS
 
 BEGIN
  DBMS_OUTPUT.PUT_LINE('Test : ' || TO_CHAR(nbDragons()));
 END affiche;
   
 
et la procedure stockée :
 
SET AUTOCOMMIT OFF
SET SERVEROUTPUT OFF
 
SET TRANSACTION READ WRITE SERIALIZABLE
 
CREATE OR REPLACE PROCEDURE trans
(
 prod IN NOURRITURES.Produit%TYPE,
 cal IN NOURRITURES.Calories%TYPE
 
)
 
IS  
 
 BEGIN
  INSERT INTO NOURRITURES(Produit,Calories)
  VALUES(prod,cal);
  COMMIT;
--  ROLLBACK;  
   pack.affiche;
 END;
/
 
Merci d'avance je suis un novice

Reply

Marsh Posté le 24-03-2005 à 19:40:23   

Reply

Marsh Posté le 24-03-2005 à 20:32:37    

en fait dès que je me reconnecte sur ma session mon package et ma proc sont là mais je suis obligé de les recompiler pour que mes résultats s'affichent.
Sinon si je ne recompile pas la proc s'execute mais n'affiche rien :??:

Reply

Marsh Posté le 25-03-2005 à 17:02:57    

petite question:
- est ce que oracle met ton package à l'état "invalide"?
=> si c'est le cas, il y a sans doute une objet dans ta base qui le fait passé à invalide...
 
- c'est un problème que j'ai déjà rencontré avec le logiciel TOAD. Tu utilises quel interface pour compiler ton package???

Reply

Marsh Posté le 26-03-2005 à 12:18:20    

non bizrrement mon package est "valide" mais ma proc est elle "invalide" et pourtant je les comile de la même façon (@nom_du_fichier.sql)
J'utilise SQL_PLUS

Reply

Marsh Posté le 27-03-2005 à 14:30:36    

pourquoi tu ne met pas ta procédure dans le package directement?

Reply

Marsh Posté le 28-03-2005 à 00:03:30    

même en la mettant directement dans le package je suis tjs obligé de recompiler...
Je me demande si ce n'est pas la base où je suis qui a des problèmes (mauvaise installation ou autres soucis ...)

Reply

Marsh Posté le 29-03-2005 à 13:12:37    

Ton probléme ne vient pas de ta procédure stockée mais de ta session SQL
 
Je te laisse chercher un peu, avec cette piste (tu es à l'école et il faut donc que tu apprennes un peu par toi même !)
 
 [:abnocte invictus]


Message édité par Skylouck le 29-03-2005 à 13:12:53
Reply

Marsh Posté le 29-03-2005 à 13:41:21    

ok skylouk je continue à chercher ...

Reply

Marsh Posté le 29-03-2005 à 13:44:17    

xasyl a écrit :

ok skylouk je continue à chercher ...


Tu as pas trouvé  [:absolut_limon]  
 
 
cela vient de tes "SET ..." , cela va configurer ta session et donc qd tu appelles ta proc stockée les "SET..0" que tu as mis ds ta declaration ne sont pas effectués
 [:chris-of-paris]  
 
donc il faut que tu les mettes avt d'appeler ta proc stockée ! (Session SQL Appelant ta procédure stockée)
 
As-tu compris ?

Reply

Marsh Posté le 30-03-2005 à 17:10:56    

euh pas tout compris comment puis je les mettre dans ma session et non dans mes procs...
Comment faire alors pour que cela s'affiche (mon message test..), que cela soit indépendant de la session...

Reply

Marsh Posté le 30-03-2005 à 17:10:56   

Reply

Marsh Posté le 30-03-2005 à 17:36:02    

xasyl a écrit :

euh pas tout compris comment puis je les mettre dans ma session et non dans mes procs...
Comment faire alors pour que cela s'affiche (mon message test..), que cela soit indépendant de la session...


 
Bein tu fais comment pour te connecter à oracle ? avt d'appeler ta procedure stockée ?
C le fait que tu utilises le dbms_output il a besoin que ds la session sql il y ai le SET SERVEROUTPUT ON  !!!!!

Reply

Marsh Posté le 31-03-2005 à 09:45:48    

oui j'ai pigé...
tiens tu t'y connais en PHP-Oracle car je voudrais appeler mes PS via PHP (il vaut mieux des procedures ou des fonctions ?)
Merci d'avance

Reply

Marsh Posté le 31-03-2005 à 09:57:34    

xasyl a écrit :

oui j'ai pigé...
tiens tu t'y connais en PHP-Oracle car je voudrais appeler mes PS via PHP (il vaut mieux des procedures ou des fonctions ?)
Merci d'avance


Désole moi je connais pas assez php mais fait un nvx topic !

Reply

Marsh Posté le 01-04-2005 à 13:25:30    

ok je te remercie

Reply

Sujets relatifs:

Leave a Replay

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