Bonjour ,

je suis très novice en SQL, je m'en sert essentiellement pour mes programme de c#, j'utilise Sql server 2008.

J'ai donc une Procédure qui reçois en paramètres le Nom d'une base de donnée, et à partir de ce nom j'aimerais tout simplement afficher les tables de cette base de donnée, donc j'ai penser à deux solution, mais j'ai l'impression que les paramètres ne peuvent s'utiliser à ces endroit là.


Solution 1 :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
ALTER PROC selectTable
@database varchar(20)
 
AS
 
BEGIN
SELECT name FROM @database.Sys.Tables  -- SQL n'accepte pas cette syntaxe
 
END
Solution 2 :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
ALTER PROC selectTable2
@database varchar(20)
 
AS
 
BEGIN
use @database -- SQL n'accepte pas cette syntaxe
	SELECT name FROM Sys.Tables
 
END
En fait dans mon programme principale j'avais un appel à cette Stored Procédure là :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
CREATE PROC selectDatabase
AS
SELECT NAME 
from master..sysdatabases 
WHERE 
NAME NOT IN ('MASTER','TEMPDB','MODEL','MSDB','REPORTSERVER', 'REPORTSERVERTEMPdb')
Et j'aimerai envoyer le résultat en paramètre à l'autre Stored Procédure, donc dans mon programme principale, stocker le résultat (la basse de donnée choisie) dans une variable, cette même variable est envoyé à la Stored Procédure selectTable ou selectTable2, mais je n'arrive pas à gérer le paramètre @database comme il le faudrait.

Merci pour votre aide