Précédent   Forum du club des développeurs et IT Pro > Bases de données > Firebird > SQL
SQL Forum d'entraide sur le SQL pour Firebird
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 07/12/2012, 00h09   #1
kaouane
Membre habitué
 
Inscription : mai 2006
Messages : 233
Détails du profil
Informations personnelles :
Âge : 41

Informations forums :
Inscription : mai 2006
Messages : 233
Points : 109
Points : 109
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.
kaouane est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/12/2012, 07h38   #2
SergioMaster
Modérateur
 
Avatar de SergioMaster
 
Homme Serge Girard
Développeur informatique
Inscription : janvier 2007
Messages : 4 206
Détails du profil
Informations personnelles :
Nom : Homme Serge Girard
Âge : 56
Localisation : France

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

Informations forums :
Inscription : janvier 2007
Messages : 4 206
Points : 7 261
Points : 7 261
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
SergioMaster est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/12/2012, 10h34   #3
kaouane
Membre habitué
 
Inscription : mai 2006
Messages : 233
Détails du profil
Informations personnelles :
Âge : 41

Informations forums :
Inscription : mai 2006
Messages : 233
Points : 109
Points : 109
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.
kaouane est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/12/2012, 21h54   #4
kaouane
Membre habitué
 
Inscription : mai 2006
Messages : 233
Détails du profil
Informations personnelles :
Âge : 41

Informations forums :
Inscription : mai 2006
Messages : 233
Points : 109
Points : 109
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.
kaouane est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2012, 05h51   #5
ddaime
Membre expérimenté
 
Inscription : février 2006
Messages : 450
Détails du profil
Informations personnelles :
Âge : 40

Informations forums :
Inscription : février 2006
Messages : 450
Points : 500
Points : 500
Euh .... je vois pas de jointure dans ta requete ?
ddaime est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/12/2012, 11h31   #6
kaouane
Membre habitué
 
Inscription : mai 2006
Messages : 233
Détails du profil
Informations personnelles :
Âge : 41

Informations forums :
Inscription : mai 2006
Messages : 233
Points : 109
Points : 109
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.
kaouane est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 12h43.


 
 
 
 
Partenaires

Hébergement Web