Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
751 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Procedure stockée Oracle erreur

 

Sujet(s) à lire :
    - Erreur sur procedure stockée Oracle
 

 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Procedure stockée Oracle erreur

n°1078118
inandjo
la faim justifie les moyens!
Posté le 10-05-2005 à 16:47:52  profilanswer
 

Salut,
 
Je suis en train d'apprendre oracle, et après avoir crée une procedure stockée, je n'arrive pas a l'invoquer a partir de SQL* Plus. J'ai changé le mode de IN OUT a OUT, mais j'ai toujours une erreur.
J'utilise oracle 8i sur une machine win2kSP4.
 
Voici la procedure stockée:

Code :
  1. create or replace procedure myproc4
  2. (phone_no in out varchar2)
  3. is
  4. begin
  5. phone_no:='+33 '||substr(phone_no,2,1)||'-'||substr(phone_no,3,2)||'-'||substr(phone_no,5,2)||'-'||substr(phone_no,7,2)||'-'||substr(phone_no,9,2);
  6. DBMS_OUTPUT.put_line(phone_no);
  7. end myproc4;


 
Voici comment je l'invoque a partir de SQL* Plus:
 

Code :
  1. set serveroutput on
  2. execute myproc4('0145478523');


 
Voici l'erreur:
 

Citation :


BEGIN myproc4('0145478523'); END;
 
              *
ERREUR à la ligne 1 :
ORA-06550: Ligne 1, colonne 15 :
PLS-00363: expression '0565646555' ne peut être utilisée comme cible
d'affectation
ORA-06550: Ligne 1, colonne 7 :
PL/SQL: Statement ignored


 
Il ne me semble pas que la syntaxe de cette procedure soit fautive, mais ou se trouve mon erreur?


---------------
The bible was written by people who believed the earth was flat!
mood
Publicité
Posté le 10-05-2005 à 16:47:52  profilanswer
 

n°1078340
moi23372
Posté le 10-05-2005 à 19:37:36  profilanswer
 

j'aurais plutot fait une fonction a ta place
 

Code :
  1. CREATE FUNCTION fct (phone_no IN VARCHAR2) RETURN VARCHAR2IS
  2. ret VARCHAR2(100);
  3. BEGIN
  4.     ret := '+33 '||SUBSTR(phone_no,2,1)||'-'||SUBSTR(phone_no,3,2)||'-'||
  5.            SUBSTR(phone_no,5,2) ||'-'||SUBSTR(phone_no,7,2)||'-'||SUBSTR(phone_no,9,2);
  6.     DBMS_OUTPUT.put_line(ret);   
  7.     RETURN ret;
  8. END fct;


 
moi j'aurais fait comme ça... si le problème persiste, envoie moi un petit mail, je veux bien testé (ou même chercher). (J'ai Oracle 9i Release 2 sous WinXP SP2)

n°1082794
Beegee
Posté le 13-05-2005 à 21:58:21  profilanswer
 

Tu passes une valeur constante à une procedure qui doit écrire dedans, d'où le "expression '0565646555' ne peut être utilisée comme cible".
 
Une fonction est probablement plus appropriée, comme le dit moi23372 ;)

n°1692105
dieurdieuf
Posté le 25-02-2008 à 16:09:51  profilanswer
 

Merci Beegee.  
 
Je remonte le post, qui date de presque 3 ans... En tapant "PLS-00363" sous Google, j'arrive ici.  :bounce:  
 
J'ai fait la même erreur : passer une constante à une fonction qui attendait un argument en IN + OUT. Je ne débute pas, pourtant.  :pfff: Tout ça parce que la constante en question porte le même nom qu'une variable !  :heink:  
 
Comme quoi, c'est important de suivre les normes de développement et les règles de nommage...  :sol:

n°1692852
MagicBuzz
Posté le 26-02-2008 à 16:05:30  profilanswer
 

OUT, c'est le mal de toute façon : si tu dois retourner une valeur, alors t'as besoin d'une FONCTION et non d'une PROCEDURE.
 
C'est d'autant plus vrai maintenant qu'Oracle gère sans problème les record maintenant (structure si tu préfères)
 
Rappels des bases de l'algo :
 
Une PROCEDURE fait quelquechose (et donc ne retourne rien)
Une FONCTION vaut quelquechose (et si possible, ne fait rien)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Procedure stockée Oracle erreur

 

Sujets relatifs
[autorésolu][Oracle] Requête avec une clause like et des _[SGBD] Procédure stockée, paramètre et clause IN
[URGENT Erreur SQL] Moteur de recherche PHP/SQL via formulaire HTMLErreur sur procedure stockée Oracle
Erreur de synthaxeservlet et accés à la base de donnée oracle
Plus de sujets relatifs à : Procedure stockée Oracle erreur


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR