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

Langage SQL Discussion :

Pb :SQl dynamique et refcursor


Sujet :

Langage SQL

Vue hybride

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

    Informations forums :
    Inscription : Février 2004
    Messages : 11
    Par défaut Pb :SQl dynamique et refcursor
    Bonjour,
    Voici mon code, il me faut du SQL dynamique car un des noms de table dépend du mois que l'on souhaite, et j'aimerai mettre le tout dans un refcurseur afin de l'utiliser ds Report.
    Même si l'erreur semble évidente, je séche sur la façon d'y remédier.
    Pourriez-vous m'aider SVP, ou me donnez des pistes.
    Par avance, merci


    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    -- PACKAGE
     AS
    TYPE rec_coef is RECORD (
    centre VARCHAR2(2000),
    matricule admin.agents.agt_matricule%type,
    nom admin.agents.agt_nom_marital%type,
    prenom admin.agents.agt_prenom%type,
    coef admin.coefficients.coef_nouveau%type
    );
    TYPE coef_curtyp IS REF CURSOR return rec_coef;
    procedure edit_coef(i_mois IN VARCHAR2,r_coef in out coef_curtyp);
    END;
     
    -- CORPS DU PACKAGE
     AS
    procedure edit_coef(i_mois IN VARCHAR2,r_coef in out coef_curtyp) is
    i_req VARCHAR2(2000) := '
    select lib_centre(substr(a.sve_code,1,1)) centre,
    a.agt_matricule matricule,
    a.agt_nom_marital nom,
    a.agt_prenom prenom,
    substr(p.zone_donnees, 9) coef
    from agents a, pl_extract_'||i_mois||' p
    where a.agt_matricule = ltrim(rtrim(p.matricule))
    and p.code_rubrique = ''YCO''
    and p.domaine = ''E''
    and p.statut = ''EPIC''
    order by a.agt_matricule';
    r coef_curtyp;
    begin
     open r for i_req;
     loop
     fetch r into r_coef;
     exit when r%NOTFOUND;
     end loop;
     close r;
    end edit_coef;
    END;
     
    -- Erreur
    Numéro de ligne = 19 Numéro de colonne = 15 Texte d'erreur = PLS-00597: l'expression 'R_COEF' dans la liste INTO est de type incorrect

  2. #2
    Rédacteur

    Inscrit en
    Septembre 2004
    Messages
    626
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 626
    Par défaut
    Bonjour,


    Ca reste à vérifier mais je crois que tu ne peux faire un FETCH dans un RECORD qu'à partir de 9i, je ne connais pas ta version donc que se passe t il si au lieu du record tu fais un INTO dans des variables ?


    Laly.


    PS : il vaudrait mieux déplacer ce thread sur le forum ORACLE.
    In the heart of the truly greats, perfection is never achieved but endlessly pursued.

    Mon article sur les fonctions analytiques d'Oracle (calcul de moyennes mobiles, de quartiles et bien d'autres...)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 11
    Par défaut
    Effectivement avec des variables, ça le fait . Je suis actuellement en Oracle 8.1.7.
    Sans trop abuser, j'aimerai savoir si je peux alimenter mon refcurseur à partir des variables récupérer précédemment. Si oui comment, car je ne les encore jamais fait.

    Merci.

  4. #4
    Rédacteur

    Inscrit en
    Septembre 2004
    Messages
    626
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 626
    Par défaut
    Qu'entends tu par :
    Citation Envoyé par anthony8
    alimenter mon refcurseur à partir des variables récupérer précédemment

    Laly.
    In the heart of the truly greats, perfection is never achieved but endlessly pursued.

    Mon article sur les fonctions analytiques d'Oracle (calcul de moyennes mobiles, de quartiles et bien d'autres...)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 11
    Par défaut
    Comme à la base, je voulais alimenter un refcursor, je me demandais s'il était possible, à partir des cinq variables locales (récupérées dans le fetch), d'alimenter mon refcurseur, afin qu'il me serve de base à une édition.
    En espérant avoir été plus clair.
    Merci pour votre aide.

  6. #6
    Rédacteur

    Inscrit en
    Septembre 2004
    Messages
    626
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 626
    Par défaut
    Je ne suis pas sûr d'avoir tout compris, mais en gros tu veux ajouter des données à ton curseur : ce n'est pas possible, par contre tu peux ajouter tes données directement dans la table sous-jacente, fermer et réouvrir ton curseur pour avoir les nouvelles données.

    Dis moi si ca correspond à ce que tu veux faire ?


    Laly.
    In the heart of the truly greats, perfection is never achieved but endlessly pursued.

    Mon article sur les fonctions analytiques d'Oracle (calcul de moyennes mobiles, de quartiles et bien d'autres...)

  7. #7
    Rédacteur

    Inscrit en
    Septembre 2004
    Messages
    626
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 626
    Par défaut
    Que fais tu ensuite avec le curseur ?


    Laly.
    In the heart of the truly greats, perfection is never achieved but endlessly pursued.

    Mon article sur les fonctions analytiques d'Oracle (calcul de moyennes mobiles, de quartiles et bien d'autres...)

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Février 2004
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 11
    Par défaut
    Concernant le remplissage du refcurseur, je me doutais un peu de la réponse, mais bon, ce n'est pas grave.
    je souhaitais mettre ces données ds un refcurseur afin d'alimenter un bloc dans Forms (par l'intermédiaire d'une proc stockée), sans utiliser de tables "temporaires".

    Sinon, je pense qu'il y a la solution
    si choix = 1
    open refcursor for select ......... from table1
    si choix = 2
    open refcursor for select ......... from table2
    .
    .
    jusqu'à choix = 12
    mais j'essayais d'optimiser le code.
    S'il y a une autre solution (avant la migration vers de l'Oracle 9), je suis preneur.
    Merci.

  9. #9
    Rédacteur

    Inscrit en
    Septembre 2004
    Messages
    626
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 626
    Par défaut
    Bonsoir,


    Je pense que ta solution d'ouvrir et renvoyer le refcursor adapté à la situation est la meilleur.


    Laly.
    In the heart of the truly greats, perfection is never achieved but endlessly pursued.

    Mon article sur les fonctions analytiques d'Oracle (calcul de moyennes mobiles, de quartiles et bien d'autres...)

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Février 2004
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 11
    Par défaut
    Bonjour,
    Je pense que je vais rester sur cette solution jusqu'à la migration vers la 9.

    Merci pour votre aide.

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

Discussions similaires

  1. Prob SQL dynamique
    Par anthony8 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 30/09/2004, 09h53
  2. Appel de function en SQL Dynamique
    Par dkd dans le forum Oracle
    Réponses: 22
    Dernier message: 28/09/2004, 18h01
  3. SQL dynamique : pb de syntaxe
    Par Pasiphae dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 23/08/2004, 16h50
  4. SQL dynamique
    Par Etienne1 dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 16/08/2004, 10h18
  5. SQL Dynamique - Materialized view
    Par Simeans2004 dans le forum SQL
    Réponses: 15
    Dernier message: 10/06/2004, 17h56

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