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 :

Procédure stoké - Select


Sujet :

Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté Avatar de Cpas2latarte
    Inscrit en
    Janvier 2006
    Messages
    237
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 237
    Par défaut Procédure stoké - Select
    Bonjour
    Peut on en Oracle créer une procédure stocké qui renvoi un jeu de résultat, à l'instar d'un select.
    Ex
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Create Or Replace Procedure maProcedure(mesParam....)
    as
       Select * Fom Matable Where mesConditions
    End;
    Il faut qu'on puisse utiliser le jeu de résultat dans l'application hôte (delphi, php...), comme si c'était une simple requête SQL.
    Si ce n'est pas possible est t'il possible en oracle d'avoir une vue qui accepte des paramètres ?

    Merci

  2. #2
    Membre Expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Par défaut
    Fais une recherche sur ref cursor, tu trouveras ton bonheur

  3. #3
    Membre confirmé Avatar de neuropathie
    Inscrit en
    Janvier 2005
    Messages
    223
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 223
    Par défaut
    je ne sais pas si l'informtion est exacte, mais tu peux utiliser des vues matérialisées

  4. #4
    Membre expérimenté Avatar de Cpas2latarte
    Inscrit en
    Janvier 2006
    Messages
    237
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 237
    Par défaut
    Fais une recherche sur ref cursor, tu trouveras ton bonheur
    Si ce n'est pas trop demandé, serait-ce possible d'avoir un exemple
    - Le "create procedure"
    - la syntaxe pour lancer la procédure

    Merci

  5. #5
    Membre Expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Par défaut
    Voici un petit exemple :
    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
    25
    SQL>CREATE OR REPLACE PROCEDURE PROC1
      2  (NOM_TABLE IN VARCHAR2,
      3   COL IN VARCHAR2,
      4   CURSEUR IN OUT SYS_REFCURSOR)
      5  AS
      6    v_req VARCHAR2(500) ;
      7  BEGIN
      8    v_req := 'select ' || col || ' from ' || nom_table || ' where rownum < 10';
      9    open curseur for v_req;
     10  END;
     11  /
    SQL>var rc refcursor
    SQL>exec proc1 ('user_tables', 'table_name', :rc)
    SQL>print :rc
     
    TABLE_NAME
    ------------------------------
    A
    B
    C
    D
    E
    F
    G
    H

  6. #6
    Membre expérimenté Avatar de Cpas2latarte
    Inscrit en
    Janvier 2006
    Messages
    237
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 237
    Par défaut
    Avant tout, merci de votre aide.

    J'ai appliqué l'exemple donnée cela fonctionne parfaitement avec SQL PLUS.
    En revanche impossible d'executer la procédure en dehors de SQL PLUS.
    Or c'est justement la le plus important ! Je dois lancer cette procédure à partir d'une application (DELPHI / PHP) et pouvoir récupérer le jeu de résultat dans l'application (comme un select) pour affichage traitement.

    Mais la impossible de lancer la procédure, j'ai un message/d'erreur : ORA-00900: instruction SQL non valide

    Quelqu'un a une piste ?

    merci

  7. #7
    Membre Expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Par défaut
    Je ne connais ni php ni delphi, mais je suppose que ta procédure stockée s'exécute comme n'importe qu'elle autre procédure stockée et que tu dois définir une variable pour récupérer ton ref cursor.

    J'ai trouvé un exemple qui semble fonctionner en php :
    http://www.developpez.net/forums/sho...66&postcount=9

Discussions similaires

  1. Procédure stockée, Select + Insert
    Par Gregory.M dans le forum Langage SQL
    Réponses: 5
    Dernier message: 09/12/2008, 11h03
  2. Réponses: 3
    Dernier message: 21/01/2008, 12h03
  3. Procédure stockée - Select
    Par lecitoyen dans le forum Langage SQL
    Réponses: 5
    Dernier message: 24/10/2007, 20h29
  4. procédure stockée : SELECT
    Par marcusien dans le forum SQL
    Réponses: 11
    Dernier message: 11/06/2007, 16h38
  5. procédure stoké paramètre
    Par lazzeroni dans le forum Oracle
    Réponses: 7
    Dernier message: 20/06/2006, 14h20

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