IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JDBC Java Discussion :

JDBC, Sybase et procédure stockée


Sujet :

JDBC Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Inscrit en
    Avril 2005
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 9
    Par défaut JDBC, Sybase et procédure stockée
    Bonjour,

    J'ai un petit problème pour éxécuter une procédure stockée avec une base Sybase et JDBC.

    Voici le corps de ma procédure stockée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    create proc ps_part_composite_firme
    (@CodFirme varchar(50) = 'F12', @IdLangue int = 2)
    as
    begin
    	if (@IdLangue = 1) 
    		begin
    			SELECT COD_COMP AS CODE_COMPOSITE, LIB_COMP AS LIB_COMPOSITE,
    				convert(char(8), DAT_OUV, 112) AS DATE_OUV,
    				convert(char(8), DAT_CLO, 112) AS DATE_CLO
            		FROM E_COMPOSITE
            		WHERE COD_FIRM = @CodFirme
           			ORDER BY LIB_COMP
    		end
    	else
    		begin
    			SELECT COD_COMP AS CODE_COMPOSITE, LIB_REPORT AS LIB_COMPOSITE,
    				convert(char(8), DAT_OUV, 112) AS DATE_OUV,
    				convert(char(8), DAT_CLO, 112) AS DATE_CLO
            		FROM E_COMPOSITE
           			WHERE COD_FIRM = @CodFirme
           			ORDER BY LIB_REPORT
    		end
    end
    go
    La procédure stockée fonctionne bien et a été testée. Elle prend donc en paramètre un String (CodFirme) et un Integer (IdLang).
    Maintenant je veux récupérer l'affichage qu'elle génère avec son SELECT dans ma classe java. Pour cela, j'ai créé une méthode :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    try {
    	    			SybStatement syb_stmt = (SybStatement)this.conn.createStatement();
    	    			syb_stmt.setFetchSize(200);	
     
    	    			String query = "{call ps_part_composite_firme [(?, ?)]}";
    	    			SybCallableStatement call = (SybCallableStatement)this.conn.prepareCall(query);
    	    			call.setString("CodFirme",CodFirme);
    	    			call.setInt("IdLangue",langue);
    	    			SybCursorResultSet syb_rs = (SybCursorResultSet)call.executeQuery();
    }
    catch (SQLException se) { System.out.println(se.getMessage); }
    catch (Exception e) { System.out.println("Autre erreur"); }
    J'ai l'erreur SQL suivante : There is no host variable corresponding to the one specified by the PARAM datastream. This means that this variable 'CodFirme' was not used in the preceding DECLARE CURSOR or SQL command.

    Or pourtant cette variable est bien déclarée dans ma procédure stockée ! (cf. le code de la procédure).
    J'ai essayé de remplacer les lignes call.setString et call.setInt du code Java par...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    call.setString(1,CodFirme);
    call.setInt(2,langue);
    ... ça ne marche pas mieux, j'ai alors l'erreur suivante : There is no host variable corresponding to the one specified by the PARAM datastream. This means that this variable '' was not used in the preceding DECLARE CURSOR or SQL command.

    Quelqu'un a une idée ? Mon code Java est-il bon ?
    Merci d'avance

  2. #2
    in
    in est déconnecté
    Membre Expert Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Par défaut
    à moins que ce ne soit avant le try, je crois qu'il te manque le chargement de ton driver jdbc

  3. #3
    Membre régulier
    Inscrit en
    Avril 2005
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 9
    Par défaut
    Oui, le chargement du driver est fait avant le try.
    Je n'ai pas inclu tout le code, la connexion à la base, etc fonctionnant correctement...
    De même, si j'exécute une requête elle fonctionne.

  4. #4
    in
    in est déconnecté
    Membre Expert Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Par défaut
    euh excuse si je dis une betise ça fait longtemps que je n'ai pas utiliser de procédure mais cette ligne est -elle normale ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String query = "{call ps_part_composite_firme [(?, ?)]}";
    A quoi te servent les {} ?

  5. #5
    Membre régulier
    Inscrit en
    Avril 2005
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 9
    Par défaut
    Je ne sais pas trop à quoi ça sert, j'ai trouvé cette solution ici même, dans les FAQ

    EDIT: Et sans les { je viens de tester, ça ne marche pas...

  6. #6
    in
    in est déconnecté
    Membre Expert Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Par défaut
    effectivement ça semble correcte ... sur quelle ligne exactement est l'erreur ?

    sur un set ou l'executequery ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 15/01/2008, 11h16
  2. [JDBC]Result set d'une procédure stockée
    Par Vikisme dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 26/04/2007, 16h53
  3. Réponses: 7
    Dernier message: 13/12/2005, 16h31
  4. [Sybase] paramètre facultatif pour procédure stockée
    Par MashiMaro dans le forum Sybase
    Réponses: 6
    Dernier message: 15/12/2004, 15h14
  5. [SYBASE]Compilation procédures stockées
    Par esl-ta dans le forum Sybase
    Réponses: 1
    Dernier message: 22/11/2004, 12h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo