Procédure stockée,select * sur une table

glob04d -  
Reivax962 Messages postés 3672 Date d'inscription   Statut Membre Dernière intervention   -
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


A voir également:

1 réponse

Reivax962 Messages postés 3672 Date d'inscription   Statut Membre Dernière intervention   1 011
 
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
0