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

Oracle Discussion :

[JDBC] ResultSet d'une Requête stockée


Sujet :

Oracle

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    162
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2002
    Messages : 162
    Points : 88
    Points
    88
    Par défaut [JDBC] ResultSet d'une Requête stockée
    Bonjour,

    Je travaille avec Oracle 8i et je suis en peine :
    Je n'arrive pas, mais alors vraiment pas, à créer une procédure stockée renvoyant un ensemble de tuples que je récupèrerais ensuite en Java à l'aide d'un ResultSet.

    J'ai vu des choses de ce type sur internet :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Create Or Replace Procedure ma_proc
    is
    Select * from ma_table;
    end;
    /
    Sauf que lorsque je file ça à Oracle, j'ai le droit à une multitude de messages d'erreur.

    J'arrive très bien à créer des procédures stockées renvoyant des types de base, mais pas moyen de récupérer le résultat d'une requête SQL sans l'écrire en brut dans le code Java :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ResultSet rs = cs.executeQuery( "Select * from ma_table" );
    (alors que je voudrais quelquechose comme

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    CallableStatement cs;
    ResultSet rs = cs.execute("ma_proc");
    )

  2. #2
    Nouveau membre du Club
    Inscrit en
    Avril 2003
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 55
    Points : 28
    Points
    28
    Par défaut
    normal que tu es des messages d'erreur car tu n'a pas mis de begin après ton is.

    Il faut peut être placer ce que tu veux récupérer dans un curseur de sortie si tu veux selectionner tes données.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    162
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2002
    Messages : 162
    Points : 88
    Points
    88
    Par défaut
    Le "begin" est absent car j'ai mal recopié la déclaration ; normalement je le met.

    Pourriez-vous me donner plus d'informations sur le curseur de sortie ?

  4. #4
    Nouveau membre du Club
    Inscrit en
    Avril 2003
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 55
    Points : 28
    Points
    28
    Par défaut
    peux tu donner tes messages d'erreurs stp que je puissse t'aider

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    162
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2002
    Messages : 162
    Points : 88
    Points
    88
    Par défaut
    alors je tape dans un fichier test.sql, précisément :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    CREATE OR REPLACE PROCEDURE ma_proc
      IS
      BEGIN
          SELECT * FROM promos;
      END;
    /
    puis dans sqlplus :

    Là j'ai comme réponse :

    Attention : Procédure créée avec erreurs de compilation.
    je tape show errors et ça me dit :
    LINE/COL ERROR
    -------- -----------------------------------------------------------------
    4/7 PLS-00428: une clause INTO est attendue dans cette instruction
    SELECT

    4/7 PL/SQL: SQL Statement ignored
    voilà.

    Ce que j'aimerais, c'est que le résultat de ma requête soit récupérable depuis Java.

  6. #6
    Membre éprouvé

    Homme Profil pro
    Inscrit en
    Mars 2003
    Messages
    291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 291
    Points : 1 059
    Points
    1 059
    Par défaut
    Il faut que tu utilises un nouveau type (TYPE RecordSet IS REF CURSOR) et que ta fonction retourne une valeur de ce type. Ensuite la syntaxe est la même que d'habitude (pour le nouveau type tu dois etre dans un package)
    http://beuss.developpez.com
    Tutoriels PostgreSQL, Assembleur, Eclipse, Java

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    162
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2002
    Messages : 162
    Points : 88
    Points
    88
    Par défaut
    Merci bien.

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 18/10/2013, 13h30
  2. [MySQL-5.5] Impossible de créer une requête stockée avec phpmyadmin
    Par MarkouZz68 dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 21/03/2013, 11h31
  3. Réponses: 2
    Dernier message: 21/02/2013, 19h54
  4. Réponses: 2
    Dernier message: 28/08/2009, 13h05
  5. [Access] Exécuter une requête stockée depuis ASP
    Par TheRussian dans le forum ASP
    Réponses: 4
    Dernier message: 18/06/2008, 09h17

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