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
A voir également:
- Procédure stockée,select * sur une table
- Table ascii - Guide
- Table des matières word - Guide
- Table des caractères - Guide
- Table des annexes word ✓ - Forum Word
- Please select boot device ✓ - Forum Windows
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 :
Xavier
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