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 :

Probleme de Databas link dans resultat de requete


Sujet :

Oracle

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Décembre 2002
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Probleme de Databas link dans resultat de requete
    Bonjour,

    J'ai un souci sur la compilation de ma fonction avec un database link que je tente d'ajouter:

    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
     
    CREATE OR REPLACE FUNCTION SAS_UPGRADE_CHECK (V_LICENSE_ID NUMBER,p_base varchar2)
    RETURN VARCHAR2
     
    IS
        -- CUSTOMER VARS.
        V_PRODUCT         PRODUCTION.LICENSE.PRODUCT%TYPE;
        V_VERSION         PRODUCTION.LICENSE.VERSION%TYPE;
        V_MAINTEXPIRE     PRODUCTION.LICENSE.MAINTEXPIRE%TYPE;
        V_PORTCLASS_ID    PRODUCTION.LICENSE.PORTCLASS_ID%TYPE;
     .....
     
    BEGIN
       -- Gets products
        SELECT DISTINCT PRODUCT, VERSION, MAINTEXPIRE, PORTCLASS_ID
        INTO V_PRODUCT, V_VERSION, V_MAINTEXPIRE, V_PORTCLASS_ID
        FROM PRODUCTION.LICENSE@p_base
        WHERE LICENSE_ID = V_LICENSE_ID;
    ....
    Lors de la compilation, j'obtiens l'erreur suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Compilation errors for FUNCTION SALESADM.SAS_UPGRADE_CHECK 
    Error: PL/SQL: ORA-04052: error occurred when looking up remote object PRODUCTION.LICENSE@P_BASE 
           ORA-00604: error occurred at recursive SQL level 1 
           ORA-02019: connection description for remote database not found 
    Line: 40 
    Text: FROM PRODUCTION.LICENSE@p_base 
    Error: PL/SQL: SQL Statement ignored 
    Line: 38 
    Text: SELECT DISTINCT PRODUCT, VERSION, MAINTEXPIRE, PORTCLASS_ID 
    Error: Hint: Parameter 'p_base' is declared but never used in 'SAS_UPGRADE_CHECK' 
    Line: 1 
    Text: CREATE OR REPLACE FUNCTION SAS_UPGRADE_CHECK (V_LICENSE_ID NUMBER,p_base varchar2)
    Je comprends que le compilateur n'interprete pas p_base comme une variable mais directement comme le nom de la base distante.

    Comment puis je proceder pour lui faire comprendre que p_base est une variable lui indiquant la base a intérroger?

    Thanks for the help.
    Lo.

  2. #2
    Membre expert

    Profil pro
    Inscrit en
    Février 2006
    Messages
    3 437
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 3 437
    Points : 3 597
    Points
    3 597
    Par défaut
    Ce que vous voulez faire n'est pas possible comme cela car pour Oracle il faut que le nom de la table soit en dur dans le SQL statique. Eventuellement vous pouvez essayez de faire du SQL dynamique avec EXECUTE IMMEDIATE en construisant le nom de la table avec le lien de façon dynamique où p_base est une variable PL/SQL qui doit contenir le nom du database link:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    EXECUTE IMMEDIATE '
     SELECT DISTINCT PRODUCT, VERSION, MAINTEXPIRE, PORTCLASS_ID   
     FROM   PRODUCTION.LICENSE@' || p_base
    INTO V_PRODUCT, V_VERSION, V_MAINTEXPIRE, V_PORTCLASS_ID;

Discussions similaires

  1. Réponses: 5
    Dernier message: 06/06/2006, 13h14
  2. virgule dans resultat des requetes
    Par maxxou dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 06/02/2006, 10h33
  3. Réponses: 4
    Dernier message: 23/01/2006, 19h49
  4. creer champ avec valeur constante dans resultat de requete
    Par freejeje dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 20/05/2005, 11h52
  5. [C#] Affichage resultat de requete dans 2 Labels
    Par kenzo080 dans le forum ASP.NET
    Réponses: 8
    Dernier message: 02/06/2004, 21h07

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