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 :

procédure stockée avec dblink ne renvoyant aucune ligne


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juillet 2005
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 16
    Par défaut procédure stockée avec dblink ne renvoyant aucune ligne
    bonjour,
    J'écris des procédures stockées qui utilise des database links pour récupérer des données sur des bases distantes. Les procédures stockées prennent en argument la dblink, un mois, une année et souvent d'autres informations. J'appelle ces procédures dans un module Forms et les données sont affichées sur Report.
    J'utilise Forms 6i et les bases sont sur Oracle 10g.
    Je faisais mes développements sur une base de test. Ensuite j'ai transmis mes procédures stockées au DBA pour qu'il les crée sur la base de production avec les droits. Le schéma utilisateur que j'utilise est le même sur la base de test que sur la base de production et ce schéma existe sur les bases distantes.
    Le problème est que je n'ai aucune donnée renvoyée lorsque je lance le module sur la base de production alors que ça marche sur la base de test.

    Voici le code d'une de mes procédures stockées:
    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
    42
    43
    44
    45
    46
    47
    CREATE OR REPLACE PROCEDURE
            remplissage_t_bt (p_base  VARCHAR,
                              p_mois  NUMBER,
                              p_annee NUMBER)
    IS
            v_requette VARCHAR2(2000);
    BEGIN
            v_requette:= 'insert into TABLE_TEMP '
            || '(t_date, t_mois, t_expl, T_EXPL_LIB, t_mnt_bt) '
            || 'SELECT JR_DATE, to_char(JR_DATE,''MM/YYYY'') mois, EXPL, LIBELLE, sum(MT_JRB) + sum(MT_JRC) T_MNT_BT '
            || 'FROM '
            || '(SELECT  JC_EXPL# EXPL, expl_libelle LIBELLE, '
            || 'to_date(to_char(JC_DATE#,''DD/MM/YYYY''),''DD/MM/YYYY'') JR_DATE, '
            || 'SUM(JC_MONTANT) MT_JRC, 0 MT_JRB '
            || 'FROM t_jc@'
            ||p_base
            ||', t_expl@'
            ||p_base
            || ' WHERE to_char(to_date(JC_DATE#,''DD/MM/YYYY''),''MM/YYYY'') '
            || '= to_char(to_date(to_char('
            ||p_mois
            ||')||''/''||to_char('
            ||p_annee
            ||'),''MM/YYYY''),''MM/YYYY'') '
            || 'AND  JC_EVT# IN (9,10) '
            || 'AND t_jc.JC_EXPL# = t_expl.expl_code# '
            || 'group by JC_EXPL#,expl_libelle, to_date(to_char(JC_DATE#,''DD/MM/YYYY''),''DD/MM/YYYY'') '
            || 'UNION '
            || 'SELECT  JB_EXPL# EXPL, expl_libelle LIBELLE, '
            || 'to_date(to_char(JB_DATE#,''DD/MM/YYYY''),''DD/MM/YYYY'') JR_DATE, 0 MT_JRC, '
            || 'SUM(JB_MONTANT) MT_JRB '
            || 'FROM t_jb@'
            ||p_base
            ||', t_expl@'
            ||p_base
            || ' WHERE to_char(to_date(JB_DATE#,''DD/MM/YYYY''),''MM/YYYY'') '
            || '= to_char(to_date(to_char('
            ||p_mois
            ||')||''/''||to_char('
            ||p_annee
            ||'),''MM/YYYY''),''MM/YYYY'') '
            || ' AND  JB_EVT# IN (9,10) '
            || ' AND t_jb.JB_EXPL# = t_expl.expl_code# '
            || ' group by JB_EXPL#, expl_libelle, to_date(to_char(JB_DATE#,''DD/MM/YYYY''),''DD/MM/YYYY'')) '
            || 'GROUP BY  JR_DATE,  to_char(JR_DATE,''MM/YYYY''), EXPL, LIBELLE order by 1,2,3';
            EXECUTE immediate v_requette ;
    END;
    Et voici les l'affectation des droits:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    DROP PUBLIC SYNONYM remplissage_t_bt;
    CREATE PUBLIC SYNONYM remplissage_t_bt FOR GES.remplissage_t_bt
    /
    GRANT  EXECUTE, DEBUG ON remplissage_t_bt TO PUBLIC
    /
    GES est un DBA.
    Voilà mon problème. J'ai fouiner les programmes je n'ai rien trouvé. Je suis un peu débutant. Merci de me guider.

  2. #2
    Membre éclairé Avatar de rvfranck
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2004
    Messages
    746
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2004
    Messages : 746
    Par défaut
    Est ce que les deux (2) bases ont les mêmes données? il y'a pas de message d'erreur généré?

  3. #3
    Membre averti
    Inscrit en
    Juillet 2005
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 16
    Par défaut
    Pas exactement les mêmes données, mais plûtot les mêmes structures de données. La base de test comporte des données moins récentes que la base de production; mais les données qui sont recuperées ne viennent pas seulement de la base de connexion mais surtout des bases distantes.
    Il n'ya pas de message d'erreur généré.

  4. #4
    Membre éclairé Avatar de rvfranck
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2004
    Messages
    746
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2004
    Messages : 746
    Par défaut
    C'est vraiment bizarre que t'aie pas de message d'erreur!!! alors peut être que ta bd de production n'a pas les données repondant aux critères de ta requête

    Essaye d'executer ta procedure stockée directement dans SQL+ (pas dans report ou form) sur ta bd de production pour voir si cela te donne les resultats attendus ou un quelconque message d'erreur.
    Dans ta clause FROM, t_jb et t_expl sont des synonymes de tables ou des noms de tables? il faudrait peut être les preceder du schema dans lequel elles se trouvent.

  5. #5
    Membre averti
    Inscrit en
    Juillet 2005
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 16
    Par défaut
    Oui c'est bizarre mais aucun message d'erreur n'est retourné. En fait la base de test est une copie de la base de production. LEs tables t_jb et t_expl sont bien des synonymes.
    Pour ce qui est de l'exécution sous SQLPLUS, l'exécution de la procédure stockée ne donne aucun resultat(pas d'erreur mais aucune ligne renvoyée). Cependant, lorsque je "deshabille" la procédure stockée laissant seulement la requête et que j'exécute celle-ci sur la base de production, j'ai mes données.
    Mon DBA pense que c'est un problème de paramétrage mais il dis avoir fait le tour des paramètres sans rien trouvé.

  6. #6
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 954
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 954
    Par défaut
    Ca ressemble a un problème d'affectation des droits (directement / via un rôle)
    Les droits donnés via un rôle ne sont pas connu dans une procédure stockée.

    Par contre bizarre que ça ne renvoie pas de message d'erreur, donc c'est peut être pas ça...

    Enfin peut être une piste à fouiller, même si je ne connais pas trop les subtilités de l'utilisation des synonymes.

Discussions similaires

  1. Procédure stockée avec retour de curseur
    Par Oufti dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 07/11/2005, 22h40
  2. Procédure stockée avec SELECT UNION
    Par maredami dans le forum Oracle
    Réponses: 4
    Dernier message: 07/11/2005, 11h05
  3. Procédure stockée avec serveur lié et paramètres
    Par AITOZ dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 27/10/2005, 17h51
  4. Procédure stockée avec param de sortie:marchepas av ADO
    Par Fabby69 dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 14/10/2004, 12h04

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