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

  FORUM HardWare.fr
  Programmation
  Java

  [RESOLU]Erreur SQL : ORA-01008: Toutes les variables ne sont pas liées

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[RESOLU]Erreur SQL : ORA-01008: Toutes les variables ne sont pas liées

n°1486677
Mric78
Posté le 05-12-2006 à 15:27:35  profilanswer
 

J'ai un gros problème urgent consernant l'execution d'une procédure depuis SQL.
 
J'ai ouvert ma connexion, et j'ai donc le code suivant pour executer ma procédure :
 

Code :
  1. //Connexion déclaré en variable global cnx.
  2. public void execproc(String TF, String CS, String DS, String VO){
  3.  try {
  4.   CallableStatement proc = cnx.prepareCall("{ ? = call ajout_explr(?,?,?,?) }" );
  5.   proc.setString(1,TF);
  6.   proc.setString(2,CS);
  7.   proc.setString(3,DS);
  8.   proc.setString(4,VO);
  9.   proc.execute();
  10.  }
  11.  catch(SQLException e) {
  12.   String error = e.toString();
  13.   System.out.println("Erreur sur le traitement de la procedure : " + error);
  14.   }
  15. }


 
L'erreur SQL qui revient est donc : "ORA-01008: Toutes les variables ne sont pas liées".
 
La procédure a été testé sur oracle et marche très bien :
 

Code :
  1. CREATE OR REPLACE PROCEDURE ajout_explr(tf string, cs string, ds string, voex string) IS
  2. nf integer;
  3. maxne integer;
  4. maxnf integer;
  5. BEGIN
  6. select MAX(numExemplaire)+1 into maxne FROM Exemplaire;
  7. nf := verif_film_existe(tf);
  8. IF (nf=-1) THEN
  9.  select MAX(numfilm)+1 into maxnf FROM film;
  10.  INSERT INTO film(numfilm,titre) VALUES (maxnf,tf);
  11.  DBMS_output.put_line('Film ajouté dans la base');
  12.  SELECT numfilm into nf
  13.  FROM film
  14.  WHERE Titre=tf;
  15. END IF;
  16. INSERT INTO exemplaire(NumExemplaire,NumFilm,CodeSupport,DetailSupport,VO)
  17. VALUES(maxne,nf,cs,ds,voex);
  18. END ajout_explr;
  19. /


 
Merci d'avance pour vos réponses, je suis vraiment bloqué et c'est assez chiant :(


Message édité par Mric78 le 06-12-2006 à 14:43:49
mood
Publicité
Posté le 05-12-2006 à 15:27:35  profilanswer
 

n°1486699
Chaos Inte​stinal
Posté le 05-12-2006 à 16:07:49  profilanswer
 

5 points d'interrogation, 4 variables assignées, c'est pas ça le problème ? :o
D'ailleurs c'est exactement ce que veut dire le message à priori.


Message édité par Chaos Intestinal le 05-12-2006 à 16:08:26
n°1486798
Mric78
Posté le 05-12-2006 à 18:28:18  profilanswer
 

Je ne savais pas que le 1er était une variable, mais soit ... même quand j'enleve le "?=" j'ai toujours la même erreur.

n°1486832
charly007
Posté le 05-12-2006 à 20:27:46  profilanswer
 

Juste pour faire avancer le truc :
 
1. Ta procédure est-elle dans un paquetage ? Si oui, la spécification de ta procédure possède-t-elle bien 4 paramètres ?
 
2. Les paramètres sont-ils non nuls ? (Je ne suis pas sûr que ça ait un impact)

n°1486833
Mric78
Posté le 05-12-2006 à 20:30:31  profilanswer
 

Ma procédure n'est dans aucun paquetage.
 
Aucun paramètre n'est nul (du moins en la testant, je les ai toujours rempli), je testerai plus tard si ca change quelque chose, même si je ne pense pas car c'est tout simplement une chaine vide dans ce cas.

n°1486868
lonely
Posté le 05-12-2006 à 23:56:43  profilanswer
 

Le premier paramètre est un paramètre de sortie.
proc.registerOutParameter(1,Types.VARCHAR);
proc.setString(2,TF);
proc.setString(3,CS);
proc.setString(4,DS);
proc.setString(5,VO);
 
System.out.println(proc.getString(1));


Message édité par lonely le 06-12-2006 à 00:04:14
n°1487167
Mric78
Posté le 06-12-2006 à 13:16:33  profilanswer
 

Si j'ai bien compris, ca me donne ca :
 
CallableStatement proc = cnx.prepareCall("{? = call ajout_explr(?,?,?,?) }" );
   proc.registerOutParameter(1,Types.VARCHAR);  
   proc.setString(2,TF);
   proc.setString(3,CS);
   proc.setString(4,DS);
   proc.setString(5,VO);
   System.out.println(proc.getString(1));
   proc.execute();
 
Mais le System.out.println(proc.getString(1)); doit sortir quoi ?
Il me fait une erreur :
Index de colonne non valide.
 

n°1487250
Mric78
Posté le 06-12-2006 à 14:43:32  profilanswer
 

Problème résolu.
Il ne falait pas que SQL!Plus soit lancé en même temps que mon programme. Erreur toute bête.
 
Merci pour votre aide.

n°1487259
MagicBuzz
Posté le 06-12-2006 à 14:55:39  profilanswer
 

:heink:
 
Si SQL+ tourne en même temps que ton prog, ça plante ? :heink:
 
Depuis quand Oracle fait des produits mono-session-mono-poste-mono-utilisateur :??:

n°1487305
brisssou
8-/
Posté le 06-12-2006 à 15:34:18  profilanswer
 

est-ce que tu es sûr que ton call retourne un seul résultat ? sinon, faut passer par un executeQuery, et récupérer un resultSet sur le quel itérer.
 
ton code ne doit marcher que si tu as un seul résultat.


---------------
HFR - Mes sujets pour Chrome - Firefox - vérifie les nouveaux posts des topics suivis/favoris
mood
Publicité
Posté le 06-12-2006 à 15:34:18  profilanswer
 

n°1487481
Mric78
Posté le 06-12-2006 à 17:45:27  profilanswer
 

En fait les requetes de base marche si SQL+ est lancé, mais pas les appels de procédure.
 
Mon call ne retourne rien, mais j'avais tout essayé pour voir si ca marchais, j'ai donc un call tout simple maintenant avec mes 4 paramètres.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  [RESOLU]Erreur SQL : ORA-01008: Toutes les variables ne sont pas liées

 

Sujets relatifs
[javascript] Passer des variables à une fonction[PHP/MySQL] [RESOLU] GRANT, Problèmes de droits
[Résolu] Vérification en javascript d'un tableau dynamique en PHP[résolu] Probleme avec les sessions
[PHP : facile je pense] Fichiers en php et incrementation de variablesgros problème de décalage/alignement avec IE [résolu, nouveau prob...]
[Résolu][Javascript] Boutons graphiques dynamiquesDéplacement/copie de fichier dans un trigger SQL Server
[HTML/CSS] Menu en arbre ouvert [résolu merci Gatsu35][ORACLE-PL/SQL] [Résolu] Trigger et appel de procédure externe
Plus de sujets relatifs à : [RESOLU]Erreur SQL : ORA-01008: Toutes les variables ne sont pas liées


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