PLSQL
stefy
-
sandul Messages postés 4013 Statut Membre -
sandul Messages postés 4013 Statut Membre -
Bonjour,
Je débute en PLSQL. Comment dans un même script, puis-je me connecter à 2 bases différentes.Je vais essayer de m'expliquer :
Je lance mon script avec la commande :
sqlplus uid/pswd@connexionBase1 @monscript.sql donc à ce niveau je me connecte à la base 1 mais dans le script "monscript.sql" j'ai aussi besoin d'aller chercher des données dans une base2 pour les rapatrier dans ma base 1....
Je ne suis pas sure d'être tres claire...
Merci pour votre aide car je suis perdue !!
Je débute en PLSQL. Comment dans un même script, puis-je me connecter à 2 bases différentes.Je vais essayer de m'expliquer :
Je lance mon script avec la commande :
sqlplus uid/pswd@connexionBase1 @monscript.sql donc à ce niveau je me connecte à la base 1 mais dans le script "monscript.sql" j'ai aussi besoin d'aller chercher des données dans une base2 pour les rapatrier dans ma base 1....
Je ne suis pas sure d'être tres claire...
Merci pour votre aide car je suis perdue !!
7 réponses
mauvaise nouvelle pour toi : une procédure stockée, comme son nom l'indique, est stockée dans la base, elle dépend directement de ta base de données.
donc, pour te connecter à 2 bases simultanément par une procédure stockée, c'ést pas gagné
c'est dans ton programme (si il y en a un) qu'il faut faire le travail de connexion
donc, pour te connecter à 2 bases simultanément par une procédure stockée, c'ést pas gagné
c'est dans ton programme (si il y en a un) qu'il faut faire le travail de connexion
merci pour l'info mais je ne comprends pas trop.
Dans mon script je ne peux donc pas me connecter à plusieurs bases ?
Dans mon script je ne peux donc pas me connecter à plusieurs bases ?
non, puisque ton script est stocké DANS une base
ton script commence comme ca, non?
CREATE OR REPLACE PROCEDURE MA_PROCEDURE AS
{
// le code
}
ceci veut dire qu'en exécutant ce script, tu vas demander à ta base de données de créer une procédure
d'ailleurs, pour créer cette procédure, tu te places dans un terminal de ta base de données et tu tapes
@FICHIER_SCRIPT.SQL (si tu es sous Oracle du mois)
ce script fera donc partie intégrante de ta base de données et ne pourra pas se partager sur une autre base de données.
par ailleurs, à l'exécution de ton script, et donc à la création de ta procédure stockée, normalement, ton SGBD doit vérifier l'intégrité de ce que tu as écrit et la compatibilité avec la forme de ta base
ton script commence comme ca, non?
CREATE OR REPLACE PROCEDURE MA_PROCEDURE AS
{
// le code
}
ceci veut dire qu'en exécutant ce script, tu vas demander à ta base de données de créer une procédure
d'ailleurs, pour créer cette procédure, tu te places dans un terminal de ta base de données et tu tapes
@FICHIER_SCRIPT.SQL (si tu es sous Oracle du mois)
ce script fera donc partie intégrante de ta base de données et ne pourra pas se partager sur une autre base de données.
par ailleurs, à l'exécution de ton script, et donc à la création de ta procédure stockée, normalement, ton SGBD doit vérifier l'intégrité de ce que tu as écrit et la compatibilité avec la forme de ta base
Oui je comprends plus ou moins mais non mon script ne commence pas comme tu dis.
C'est un ensemble de curseur sur la base1 que je lis et ensuite j'insere dans une table. Le problème étant que dans cette table je dois aussi inserer des données qui viennent d'une autre base mais je ne sais pas comment faire.
C'est un ensemble de curseur sur la base1 que je lis et ensuite j'insere dans une table. Le problème étant que dans cette table je dois aussi inserer des données qui viennent d'une autre base mais je ne sais pas comment faire.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Salut,
Tu peux très bien utiliser par exemple un database link pour accéder les objets (tables, views etc) de ta deuxième base. Regarde par exemple par ici: https://docs.oracle.com/cd/B28359_01/server.111/b28286/statements_5005.htm
++
Tu peux très bien utiliser par exemple un database link pour accéder les objets (tables, views etc) de ta deuxième base. Regarde par exemple par ici: https://docs.oracle.com/cd/B28359_01/server.111/b28286/statements_5005.htm
++
OK. Le link est spécialement utile si ton script est à passer plus d'une fois. En revanche, si tu dois le passer une seule fois (une opération one-shot) tu peux aussi passer par un import des tables qui t'intéressent de la base2 vers la base1. Par la suite tu passes le script et à la fin tu détruis les tables inutiles importées antérieurement.
++
++