2010-01-25 2 views
1

Je demande comment je pourrais passer des paramètres multiples à une procédure stockée, l'un de ces paramètres est la table définie par l'utilisateur. Quand j'ai essayé de le faire il montre cette erreur:Type de table mixte avec d'autres types comme paramètres à Stored Procedured C#

INSERT INTO BD (ID, VALEUR, BID) valeurs ((SELECT t1.ID, t1.Value DE @Table T1), someintvalue) ici @Table est le paramètre de table défini par l'utilisateur. Msg 116, niveau 16, état 1, procédure UpdateBD, ligne 12 Une seule expression peut être spécifiée dans la liste de sélection lorsque la sous-requête n'est pas présentée avec EXISTS. Msg 109, niveau 15, état 1, procédure UpdateBD, ligne 11 Il existe plus de colonnes dans l'instruction INSERT que de valeurs spécifiées dans la clause VALUES. Le nombre de valeurs dans la clause VALUES doit correspondre au nombre de colonnes spécifié dans l'instruction INSERT.

Merci

Répondre

1

Vous devez passer au nom de la table en tant que varchar et votre requête doit être un varchar aussi bien. Il ressemblerait à ceci:

CREATE PROCEDURE MyStoredProc(
    @MyTableNameParameter varchar(50) = null 
) 
AS 

DECLARE @Query nvarchar(MAX) 

SET @Query = N'SELECT * FROM ' + @MyTableNameParameter + ' WHERE 1=1' 

EXEC (@Query) 

GO 

Je recommande de ne pas utiliser cette technique mais parce qu'il est vulnérable à l'injection SQL

+0

Désolé pour le -1 initial ... n'a pas lu votre dernière ligne. : / – Randolpho

Questions connexes