1

J'essaie d'insérer dynamiquement des variables dans une table SQL Server à l'intérieur d'une procédure stockée, mais je ne parviens pas à l'exécuter en raison de la syntaxe. Quelqu'un peut-il me corriger ce que je fais mal dans le code ci-dessous. Merci.Insérer des variables dans une table SQL Server dans une procédure stockée

code J'ai essayé:

SET @SQLStmt1 = N'INSERT INTO TestTable (TableName) 
        VALUES(' + @ResulTableName + N')' 
EXEC sp_executesql @SQLStmt1  

Répondre

2

Vous êtes à proximité, mais vous devez utiliser un paramètre pour la valeur:

SET @SQLStmt1 = N'INSERT INTO TestTable(TableName) 
           VALUES(@ResulTableName)'; 

EXEC sp_executesql @SQLStmt1, N'@ResultTableName NVARCHAR(MAX)', 
        @ResulTableName = @ResulTableName; 

Si vous avez imprimé @SQLStmt1, vous verriez que les guillemets simples ne sont pas corrects.

+0

Comment faire ceci si j'ai plus d'une colonne dans le tableau? – Teja

+2

Vous ajoutez simplement des paramètres supplémentaires pour les colonnes. –

-1

vous pouvez le faire en ajoutant des triples guillemets « » » cela résoudra votre problème

SET @SQLStmt1 = N'INSERT INTO TestTable(TableName) 
           VALUES(''' + @ResulTableName + ''')' 
EXEC sp_executesql @SQLStmt1  

la raison qui est cette citation triple dans le SQL dynamique deviendra une seule citation lorsque le code s'exécuté .

+1

Ceci est une mauvaise pratique, particulièrement inutile lors de l'utilisation de 'sp_executesql' qui accepte les paramètres. –