Partage
  • Partager sur Facebook
  • Partager sur Twitter

retour d'une procédure stockée pour java

    30 août 2011 à 0:07:34

    Bonjour, dans ma procédure stockée j'utilise FOR UPDATE pour avoir l'exclusivité d'une ligne de ma table, et dans cette même requête j'envoie selon chaque situation une réponse du genre SELECT "objet introuvable" ou SELECT "Vous avez acheté un produit ...".

    Je viens de me rendre compte que :
    ...
    ResultSet rs = cstmt.executeQuery();
    try {
      if (rs.next()) {    
        reponse=rs.getString(1));
      } 
    } finally {
      rs.close();
    }
    

    est faux car le code SELECT ... FOR UPDATE provoque une sortie, et rs.getString(1) est la valeur du 1° champ. Comment faire pour récupérer ce que je veux ?
    • Partager sur Facebook
    • Partager sur Twitter
      30 août 2011 à 9:44:19

      Montre toute ta procédure. Ensuite, je vois une erreur de syntaxe, tu as 2 parenthèse fermantes pour ton rs.getString(1).
      • Partager sur Facebook
      • Partager sur Twitter
        30 août 2011 à 10:33:24

        oui pour la parenthèse mais c'est une erreur de recopie et de mise en forme.
        Je ne pourrais pas tout mettre :
        CREATE PROCEDURE Vente(_user_id SMALLINT(4),_commerce_id
        MEDIUMINT(8) UNSIGNED,taux_ TINYINT(2) UNSIGNED)
        BEGIN
        ...
           DECLARE erreur_ TINYINT(1) DEFAULT 0;
           DECLARE CONTINUE HANDLER FOR NOT FOUND SET erreur_=1;
           DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET erreur_=2;
           DECLARE CONTINUE HANDLER FOR SQLWARNING SET erreur_=3;
        
           SET AUTOCOMMIT = 0;
           SET uuid_=UUID();
           SELECT 1 FROM TCommerce c INNER JOIN 
           TUser u ON(c.user_id=u.user_id)
           WHERE(c.commerce_id=_commerce_id)AND(u.user_id=_user_id)
           AND(c.etat=1)AND(c.tpsuuid='') FOR UPDATE;
           IF(erreur_<>0)THEN
               SELECT "Abandons, la donnée n'est plus accessible ...";
               COMMIT;
           ELSE
               ...
               SELECT solde,... INTO solde_,....
               IF(prix_>solde_ OR erreur_<>0)THEN
                  SELECT "Abandons, solde insuffisant ...";
                  COMMIT;
               ELSE
                  ... (même genre de test par la suite)
               END IF;
           END IF;
        END//
        DELIMITER ;
        
        • Partager sur Facebook
        • Partager sur Twitter

        retour d'une procédure stockée pour java

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown