Procédure stockée,select * sur une table
glob04d
-
Reivax962 Messages postés 3672 Date d'inscription Statut Membre Dernière intervention -
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
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
- Please select boot device ✓ - Forum Windows
- Table des annexes word ✓ - Forum Word
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