Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 6 sur 6
  1. #1
    Membre habitué
    Inscrit en
    mai 2006
    Messages
    241
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : mai 2006
    Messages : 241
    Points : 119
    Points
    119

    Par défaut Interroger une base depuis une autre

    Bonjour tout le monde;
    Est ce que c'est possible d'interroger une base de données depuis une procédure d'une autre base de données?
    C-à-dire, dans une procédure P d'une base de données B1, je cherche un enregistrement dans une table d'une autre base de donnée B2.
    J'espère que la réponse soit clère car la question n'est pas trop clère.
    Deux personnes n'apprennent pas, un arrogant et un timide.

  2. #2
    Rédacteur/Modérateur
    Avatar de SergioMaster
    Homme Profil pro Serge Girard
    Développeur informatique
    Inscrit en
    janvier 2007
    Messages
    5 297
    Détails du profil
    Informations personnelles :
    Nom : Homme Serge Girard
    Âge : 58
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : janvier 2007
    Messages : 5 297
    Points : 9 670
    Points
    9 670

    Par défaut

    une réponse claire mais en Anglais , que j'ai la flemme de retraduire si tôt le matin
    Citation Envoyé par http://www.firebirdfaq.org
    Firebird 2.5 introduces a way to query the external data sources in PSQL. EXECUTE STATEMENT has been extended with a special clause: ON EXTERNAL DATA SOURCE, and you can supply a different Firebird database as a data source. This means that you can fetch data from another database into PSQL variables. You cannot do JOINs with tables in different databases, but this is a nice start. Example:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
     
    execute block returns (emp_no smallint) AS
    begin
    FOR EXECUTE STATEMENT 'select emp_no from employee'
    ON EXTERNAL DATA SOURCE 'localhost:employee' AS USER 'sysdba' PASSWORD 'masterkey'
    INTO :emp_no
    DO SUSPEND;
    end
    Donc réponse : Oui avec la version 2.5
    La seule chose absolue dans un monde comme le nôtre, c'est l'humour. » Albert Einstein
    J'entends et j'oublie. Je vois et je me souviens. Je fais et je comprends . Confucius
    Si votre seul outil est un marteau, vous aurez tendance a ne voir que des clous

  3. #3
    Membre habitué
    Inscrit en
    mai 2006
    Messages
    241
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : mai 2006
    Messages : 241
    Points : 119
    Points
    119

    Par défaut

    Citation Envoyé par SergioMaster Voir le message
    You cannot do JOINs with tables in different databases, but this is a nice start.
    C'est vraiment un bon début et même suffisant dans beaucoup de cas;
    Merci beaucoup cher ami.
    Deux personnes n'apprennent pas, un arrogant et un timide.

  4. #4
    Membre habitué
    Inscrit en
    mai 2006
    Messages
    241
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : mai 2006
    Messages : 241
    Points : 119
    Points
    119

    Par défaut

    Bonsoir tout le monde; On peut même faire des jointures, il suffit seulement de la préparer dans une chaine de caractère cad :
    Code :
    1
    2
    3
    4
      BEGIN 
     ST = 'select count(col) as n from source where col = '||''||RC||'';
     EXECUTE STATEMENT :ST ON EXTERNAL DATA SOURCE 'localhost:base2' AS USER 'SYSDBA' PASSWORD 'masterkey' INTO :N;
     IF (N = 0) THEN UPDATE TRANSPORTEUR SET VALIDE = 0 WHERE RC = :RC;
    Je l'ai essayé et ça marche très bien. Pourquoi ils disent que les jointures ne sont pas possibles???
    Deux personnes n'apprennent pas, un arrogant et un timide.

  5. #5
    Membre expérimenté
    Inscrit en
    février 2006
    Messages
    464
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : février 2006
    Messages : 464
    Points : 503
    Points
    503

    Par défaut

    Euh .... je vois pas de jointure dans ta requete ?

  6. #6
    Membre habitué
    Inscrit en
    mai 2006
    Messages
    241
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : mai 2006
    Messages : 241
    Points : 119
    Points
    119

    Par défaut

    Citation Envoyé par ddaime Voir le message
    Euh .... je vois pas de jointure dans ta requete ?
    C'est vrai ce n'est pas une jointure
    Deux personnes n'apprennent pas, un arrogant et un timide.

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

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •