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

SQL Oracle Discussion :

REF CURSOR et requête dynamique


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 36
    Par défaut REF CURSOR et requête dynamique
    Bonjour à tous !

    Je rencontre un soucis avec un REF CURSOR :
    J'ai créé une procédure stockée qui se base sur un REF CURSOR pour me retourner des données que je traite dans un L4G (PowerBuilder).

    Voici cette procédure :

    CREATE OR REPLACE PROCEDURE BUILD_DW_PR
    (
    IO_CUR IN OUT TBPI_CA_CURSEUR_PG.P_TC_REF_CURSOR
    )
    IS

    BEGIN
    OPEN IO_CUR FOR
    SELECT <colonnes> FROM <tables> WHERE....;
    END BUILD_DW_PR;
    /



    Cela fonctionne très bien avec une requête écrite dans la procédure elle même, mais j'aimerai pouvoir exécuter une requête dynamiquement en la stockant dans une variable, par exemple EXECUTE IMMEDIATE var_requete;
    Cela ne semble pas fonctionner dans le cadre du REF CURSOR....
    Qulequ'un aurait une idée ? Je suis sous ORACLE 8.

    Merci par avance pour votre aide !

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    354
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 354
    Par défaut
    ça par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    CREATE OR REPLACE PROCEDURE BUILD_DW_PR
    (
      p_instruction varchar2,
      IO_CUR IN OUT SYS_REFCURSOR
    )
    IS
     
    BEGIN
      OPEN IO_CUR FOR p_instruction;
    END BUILD_DW_PR;
    /

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 36
    Par défaut Ca marche, mais ....
    ne peut-on pas faire de traitement dans la proc elle-même ?

    J'aurai aimé récupérer le texte de la requête p_instruction via la procédure elle même en appelant depuis cette procédure une fonction qui me retournerait le texte de cette reqûete stockée dans la base de données (au lieu de passer la requête en argument)....

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    354
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 354
    Par défaut
    Si c'est possible
    Tout dépend de ce qu'on veut!
    Le texte de l'instruction peut être entièrement fabriqué dans la procédure et nous pouvons y faire des "traitements" aussi ...

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 36
    Par défaut J'ai essayé mais ORACLE ne veut rien savoir
    J'ai essayé d'appeler une fonction, déclarer des variables dans ma procédure BUILD_DW_PR, mais il semblerait que dès que je mets autre chose que l'open du cursor, ORACLE refuse en bloc....(je suis en oracle8i).

    Par ailleurs, lorsque dans le fonctionnement que vous m'avez gentiment proposé je passe une requête contenant des cotes ORACLE me retourne un ORA-01001 Invalid Cursor.
    si p_instruction = select sysdate from dual cela fonctionne,
    si p-instruction = select to_char(sysdate, 'DD/MM/YYYY') from dual j'ai le ORA-01001, de quoi cea put-il venir ?

    Merci beaucoup pour votre aide !

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 36
    Par défaut [RESOLU]
    Ca y est je suis finalement parvenu à constituer ma requête dans le cadre de ma précédure avec appel à une fonction.
    Pour ce faire, il a fallu que je mette la référence du ref cursor en premier paramètre dans ma DW et les autres à la suite....

    Par contre je n'ai pas résolu le pbme des ' ' dans la valeur de p_instruction...(pas grave parceque je n'en ai plus besoin), mais si vous avez un élément de réponse, je suis preneur...


    Merci encore !

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

Discussions similaires

  1. Réponses: 13
    Dernier message: 21/08/2013, 21h39
  2. [CR XI] Parametre dynamique & ref cursor
    Par anthony.44 dans le forum SAP Crystal Reports
    Réponses: 0
    Dernier message: 04/02/2011, 21h13
  3. Ref Cursor + sql dynamique
    Par jmfiliatrault dans le forum SQL
    Réponses: 2
    Dernier message: 05/11/2008, 15h11
  4. [forms] ref cursor associé à un bloc de données
    Par plaineR dans le forum Forms
    Réponses: 9
    Dernier message: 27/08/2004, 18h26
  5. REF CURSOR... Comment ça marche ?
    Par Patkaza dans le forum SQL
    Réponses: 6
    Dernier message: 28/04/2004, 14h26

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