Comment puis-je récupérer une chaîne (comme 'select 1') d'un enregistrement et le passer à sp_executesql pour qu'il l'évalue?sp_executesql avec une chaîne de db
Merci
Comment puis-je récupérer une chaîne (comme 'select 1') d'un enregistrement et le passer à sp_executesql pour qu'il l'évalue?sp_executesql avec une chaîne de db
Merci
Quelque chose comme ça?
DECLARE @MySQL nvarchar(MAX)
SELECT @MySql = SqlColumn FROM MyTable WHERE MyId = 1
EXEC(@MySql)
Ici, vous allez, en utilisant sp_executesql
DECLARE @MySQL NVARCHAR(MAX)
SELECT @MySQL = 'select top 1 * from Information_schema.tables'
EXEC sp_executeSQL @MySQL
EDIT: Pour une grande lecture, que certains appellent le guide définitif sur le travail avec T-SQL dynamique reportez-vous à la article:
Juste pour ajouter à la réponse de Robin. Le plus important est de s'assurer que vous avez une protection contre les SQL malveillants sur le terrain - vous ne dites pas comment l'instruction va entrer dans la base de données, mais vous devez faire très attention de ne pas permettre au SQL d'y entrer (par exemple ne veulent pas que vos données soient supprimées par une déclaration de voyous)!