Syntaxe de base des instructions SQL dynamiques
1 : Les instructions SQL ordinaires peuvent être exécutées avec Exec
par exemple : sélectionnez * dans tableName
Exec('select * from tableName')
Exec sp_executesql N'select * from tableName' -- Veuillez noter que N doit être ajouté avant la chaîne
2 : Lorsque les noms de champs, les noms de tables, les noms de bases de données, etc. sont utilisés comme variables, du SQL dynamique doit être utilisé
par exemple :
déclarer @fname varchar(20)
définir @fname = 'FiledName'
Sélectionnez @fname dans tableName -- Erreur, aucune erreur ne sera demandée, mais le résultat est une valeur fixe FiledName, ce qui n'est pas ce que vous souhaitez.
Exec('select ' + @fname + ' from tableName') -- Veuillez noter qu'il y a des espaces autour des guillemets simples avant et après le signe plus.
Bien sûr, vous pouvez également transformer la chaîne en une forme variable
déclarer @fname varchar(20)
set @fname = 'FiledName' --Définit le nom du champ
déclarer @s varchar(1000)
set @s = 'select ' + @fname + ' from tableName'
Exec (@s) - succès
exec sp_executesql @s -- cette phrase signalera une erreur
déclarer @s Nvarchar(1000) -- notez qu'il est remplacé par nvarchar(1000)
set @s = 'select ' + @fname + ' from tableName'
Exec (@s) - succès
exec sp_executesql @s -- Cette phrase est correcte
3. Paramètres de sortie
déclarer @num int,
@sqls nvarchar(4000)
set @sqls='select count(*) from tableName'
exécutable (@sqls)
--Comment mettre le résultat de l'exécution dans une variable ?
déclarer @num int,
@sqls nvarchar(4000)
set @sqls='select @a=count(*) from tableName '
exec sp_executesql @sqls,N'@a int sortie',@num sortie
sélectionnez @num
Si vous souhaitez utiliser des guillemets simples '' dans la chaîne de l'instruction SQL, vous pouvez utiliser ''''