procédures stockées Oracle - SQL/NoSQL - Programmation
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
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???
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
Marsh Posté le 27-03-2005 à 14:30:36
pourquoi tu ne met pas ta procédure dans le package directement?
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 ...)
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 !)
Marsh Posté le 29-03-2005 à 13:44:17
xasyl a écrit : ok skylouk je continue à chercher ... |
Tu as pas trouvé
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
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 ?
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...
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... |
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 !!!!!
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
Marsh Posté le 31-03-2005 à 09:57:34
xasyl a écrit : oui j'ai pigé... |
Désole moi je connais pas assez php mais fait un nvx topic !
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