begin process at 2010 02 09 22:23:19
  Trouver un code source :
 
dans
 
Accueil > Forum > 

SQL

 > 

SQL Server, MSDE, SQL Express

 > 

Procédures Stockées

 > 

Procedure stockée : database en parametre


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Procedure stockée : database en parametre

mardi 27 mai 2008 à 17:58:46 | Procedure stockée : database en parametre

morm91

Bonjour (ou bonsoir) a tous.

Alors je vous expose mon probleme. Je travaille sur un projet réalisé en ASP.NET dans lequel je fais appel à un grand nombre de procédures stockées.
Le probleme est que ces procédures doivent pouvoir être utilisés sur plusieurs base de données (celle de test, et celle en production).
J'aurai donc voulu pouvoir passer le nom de ma base de donnée comme paramêtre de ma procédure stockée, mais celle ci étant déclaré en tant que string, il est impossible de l'utiliser derriere : j'aurai voulu pouvoir faire qqchose du genre " select champ1, champ2 from @DB..table1 " ou @DB est le parametre contenant le nom de ma base de données.

Je ne suis pas du genre a posté un probleme des que je le rencontre, mais au bout de 2 heures de recherches intensives se révélant infructueuse, je me tourne vers vous :)
Je suis donc ouvert a toute proposition me permettant de corriger ou contourner ce probleme, sachant que je suis sensé publier le site demain...

En vous remerciant par avance,
Pierre
mardi 27 mai 2008 à 22:09:05 | Re : Procedure stockée : database en parametre

yann_lo_san

Réponse acceptée !

Salut,

Je te donne d'abord ce qui me passe par la tête au niveau SQL, et apres la solution SIMPLE !

Au niveau SQL, il n'y a qu'une seule solution à ton problème,
passer par une requete texte :

declare  @base  varchar(35)
set  @base =  'MA_BASE'

declare @sql  varchar(500)
set  @sql =  'select champ1, champ2 from ' + @base +  '..table1'

execute(@sql)


-- De même , si tu dois utiliser des variables declarées en dehors de la requête texte,
-- c'est possible, il faut simplement la caster en sysname pour pointer vers sa réference et pas sur sa valeur :

-- par exemple affecter une valeur à une variable :

declare @sql  varchar(100)

declare  @ma_var  int

set  @sql =  'set ' + cast(@ma_var as  sysname) + ' = 10 '

exec(@sql)

select  @ma_var    -- affiche 10


Maintenant la solution SIMPLE, tu passe un entier à tes procédures :
1 = base 1
2 = base 2

Et dans les procédures stockées :
if @base = 1
    select* from base1..table1
else
    select * from base 2..table2

mercredi 28 mai 2008 à 09:44:34 | Re : Procedure stockée : database en parametre

morm91

Merci tout d'abord pour la réponse :)

Donc comme je m'en doutais, il va falloir passer par une requete texte. C'est ce que j'avais commencé à faire, mais je ne savais pas que l'on pouvait les cast en sysname, ce qui faisais que je devais mettre toute ma proc dans la même string. Je vais essayer en faisant ca, ca devrait marcher :).
En revanche la solution simple ne pourra pas m'aider, mes procédures sont trop grandes, ca serait une vrai usine à gaz.

En tout cas je te remercie et te tiendrai au courant de l'avancement de mon problême :)
mercredi 28 mai 2008 à 10:07:46 | Re : Procedure stockée : database en parametre

morm91

Permier problème :s

En fait j'ai l'impression que quand je fais set  @sql =  'set ' + cast(@ma_var as  sysname) + ' = 10 ', ma variable @sql  ne contient rien, comme si le cast renvoyait null.

Je ne sais pas si le problème vient de moi (j'utilse SQL Server 2005), ou si je n'ai aps tout compris sur l'utilisation du sysname.


Cette discussion est classée dans : base, probleme, parametre, stockée, procedure


Répondre à ce message

Sujets en rapport avec ce message

procedure stockée et variable [ par exyacc ] salut, j'aimerai faire une procedure stockée qui copie une tables d'une base origine dans une autre base, qd je passe le nom en variable, ca marche pô probleme de procedure stockée [ par houdaze ] comment je dois faire l'appel de cette procedure de athentificationet ce que ce code est true*********create procedure authentification(in @username v faire une somme sur le resultat d'une procedure stockée [ par lijohann ] salut, mon probleme est que je voudrais pouvoir recupérer la somme d'un des champs renvoyés par une procedure stockée dans une autre procedure stockée une procedure stockée pour la selection!! [ par ange_sali ] Bonsoir tt le mondeest ce que on peut faire une procédure stockée avec un "SELECT" qui retourne ++ lignes comme résultat?et si oui comment il faut fai procedure stockée qui return [ par rosa_rio ] bonjour je cré une procedure stoquée en sql server qui return une valeur comme suit:create proc p1 @var intasreturn @varet je sais pas comment l'execu Procedure stockée [ par Matt67 ] Bonjour,je veux dans une procedure stockee creer une database dont le nom est passé en paramètre :create procedure test(IN dbname varchar(20))begin    Problème de gestion des signets après execution d'une procédure stockée [ par bl0nd1 ] Tout d'abord bonjour à tous, je rencontre un problème assez génant lors de la lecture de mes resultats (à l'aide d'une page ASP) provenant d'un procéd Create DataBase [ par BasicInstinct ] bonjour a tous,j'ai 2 petites questions pour des experts en procedures stockees :1) J'ai une procedure stockees qui doit me créer une DataBase. Mon pr Curseur & Procedure Stockée [ par BasicInstinct ] Bonjour tout le monde,j'ai besoin de recuperer la liste des champs qui sont fullText dans ma base de donnees.Pour ceci j'utilise la procedure stockée Sql server Procedure stockée [ par access2000 ] Bonjour,Je débute sur sql et je cherche le moyen d'obtenir un "order by" variable dans une procédure stockée.Possible ou non ?MerciGilles


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,296 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales