Procédure stockée,select * sur une table
glob04d
-
Reivax962 Messages postés 3742 Statut Membre -
Reivax962 Messages postés 3742 Statut Membre -
Bonjour,
Je souhaiterais créer une procédure stockée avec comme paramètre le nom d'une table.
Ce paramètre serait par exemple un varchar(100) , et je voudrais faire un select * sur cette table.
Par exemple :
CREATE PROCEDURE [dbo].[MaProcedure]
@matable varchar(100)
AS
SELECT * FROM @matable
Le problème est qu'il me dit que ma variable doit être déclarée.
( un 'delete from @matable' me pose le même problème )
Par contre si je fais 'select @matable', juste pour afficher le nom de ma table, ça fonctionne
Est ce que vous auriez une idée ?
merci
Je souhaiterais créer une procédure stockée avec comme paramètre le nom d'une table.
Ce paramètre serait par exemple un varchar(100) , et je voudrais faire un select * sur cette table.
Par exemple :
CREATE PROCEDURE [dbo].[MaProcedure]
@matable varchar(100)
AS
SELECT * FROM @matable
Le problème est qu'il me dit que ma variable doit être déclarée.
( un 'delete from @matable' me pose le même problème )
Par contre si je fais 'select @matable', juste pour afficher le nom de ma table, ça fonctionne
Est ce que vous auriez une idée ?
merci
1 réponse
-
Bonjour,
Le problème, c'est que @matable n'est pas une table, c'est une chaîne de caractère.
La solution est de construire la requête sous forme de chaîne de caractère, puis d'appeler une fonction prédéfinie pour l'exécuter.
Par contre, cela va dépendre de ton SGBD...
Par exemple sous MS SQL Server, tu devrais écrire :
CREATE PROCEDURE [dbo].[MaProcedure] @matable varchar(100) AS BEGIN DECLARE @sql varchar(max) SET @sql = 'SELECT * FROM ' + @matable EXEC sp_executesql @sql END
Xavier