|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : juin 2008 Messages : 1 ![]() |
Bonjour
je suis un nouveau sur ce site et je suis un étudiant en informatique. j'ai un probléme avec ma base de donnée .en effet , j'utilise oracle 10g et j'ai des problémes de connection avec la base si j'execute une requette de pl/sql demandant à l'utilisateur de rentrer un nombre par exemple , la base me retourne une erreure. par exemple avec le progaramme suivant j'ai une erreure : DECLARE v_nom varchar2(30); v_prenom varchar2(30) v_matricule number; BEGIN v_matricule := &entrer_un_nombre; select nom, prenom into v_nom, v_prenom from personne where matricule = v_matricule ; ........... end; |
|
|
00
|
|
|
#2 | ||
|
Membre régulier
![]() Développeur Web Inscription : juin 2005 Messages : 147 ![]() |
Code :
__________________
Si tu ne sais pas m'expliquer pourquoi ca ne marche pas, alors tu ne sauras pas m'expliquer pourquoi ca marche.. -Un illustre chef de projet- |
||
|
|
00
|
|
|
#3 |
|
Membre confirmé
![]() Inscription : juillet 2007 Messages : 357 ![]() |
Si a la creation de ta procedure un message te signalle : cree avec erreur de compilation alors en sqlplus avec un utilisateur ayant les droits , tu peux taper :
Code :
SHOW ERRORS PROCEDURE USER.MAPROCEDURE
|
|
|
00
|
|
|
#4 |
|
Nouveau Membre du Club
![]() Inscription : avril 2007 Messages : 72 ![]() |
Salut les amis,
Je signale que ma question est la même que celle posée par papebarasall car on bosse sur le même travail. Je crois qu'il ne s'est pas rendu compte du manque de ";" à la fin de l'instruction que userB lui a signalé. Cependant, hormis cette omission, il y a un autre problème dont on arrive pas à se débarrasser. Il s'agit, lors de l'exécution du programme, de demander à l'utilisateur de fournir un numéro d'employé et c'est avec cette entrée que l'on devra travailler dans le corps du programme. Je donne ici une ébauche des instructions concerné par l'erreur dans le programme et je vous affiche l'erreur générée à la suite de l'exécution du programme. Partie du programme concernée par l'erreur ------------------------------------------ DECLARE v_no_EMPL EMPLOYE_PL.no_EMPL%TYPE := &vs_no_EMPL; .......................... BEGIN SELECT nom_EMPL, pren_EMPL, sala_EMPL INTO v_nom_EMPL, v_pren_EMPL, v_sala_EMPL FROM EMPLOYE_PL WHERE no_EMPL = v_no_EMPL; ............................ L'erreur générée par oracle --------------------------- ORA-06550: Ligne 2, colonne 39 : PLS-00103: Symbole "&" rencontré à la place d'un des symboles suivants : ( - + case mod new not null avg count current exists max min prior sql stddev sum variance execute forall merge time timestamp interval date pipe J'espère avoir été assez clair afin que vous puissiez m'aider car je compte sur vous et merci pour vos éventuelles réponses. PS: Je travaille avec oracle 10g. |
|
|
00
|
|
|
#5 | ||
|
Membre confirmé
![]() Inscription : juillet 2007 Messages : 357 ![]() |
je pense que le code suivant fonctionnerai mieux
Code :
|
||
|
|
00
|
|
|
#6 |
|
Expert Confirmé Sénior
![]() Inscription : juillet 2003 Messages : 3 459 ![]() |
Omzo, Tu ne peux pas dans une procédure basée faire une interruption utilisateur. (le & c'est pour du sql)
Tu es obligé de passer par des paramètres (code de ZashOne).
__________________
More Code : More Bugs. Less Code : Less Bugs |
|
|
00
|
|
|
#7 |
|
Nouveau Membre du Club
![]() Inscription : avril 2007 Messages : 72 ![]() |
Merci les amis pour vos avis constructives.
J'ai fini par résoudre le problème. Il parait que le signe "&" marche si on l'utilise avec le SQL * Plus mais pas dans le cas ou l'on travaille avec la page d'accueil de la base de données oracle. Mais vous avez raison ZashOne et McM car j'ai fini par adopter la méthode que m'a proposé ZashOne qui marche à merveille. Merci pour votre aide. Vive les forums developpez.com.
|
|
|
00
|
|
|
#8 |
![]() Inscription : décembre 2002 Messages : 2 401 ![]() |
Exact ! Les variables de substitution introduites par & constituent une fonctionnalité de l'outil SQL*Plus, et ont toutes les chances de ne pas fonctionner avec d'autres outils.
Les variables de substitution sous SQL*Plus fonctionnent aussi bien pour du SQL pur que du PL/SQL. Dans un cas comme dans l'autre, le code est traité en deux passes : - à la première passe, les substitutions sont effectuées (les variables &quelquechose sont remplacées par leur valeur) - à la seconde passe, le code final est exécuté Pour se faire plaisir, on peut préciser que le signe "&" n'est que le symbole par défaut pour annoncer une variable de substitution. On pourrait employer par exemple "}", en faisant Après quoi on pourrait faire une requête comme :
__________________
Consultant / formateur Oracle indépendant Certifié OCP 10g et 11g, sécurité 11g |
|
|
00
|
|
|
#9 |
|
Nouveau Membre du Club
![]() Inscription : avril 2007 Messages : 72 ![]() |
Merci pour ces éclaircissement Pomalaix, c'est noté.
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com