Основной синтаксис операторов динамического SQL
1: Обычные операторы SQL могут выполняться с помощью Exec.
например: выберите * из tableName
Exec('выберите * из tableName')
Exec sp_executesql N'select * from tableName' — обратите внимание, что перед строкой необходимо добавить N.
2: Когда имена полей, имена таблиц, имена баз данных и т. д. используются в качестве переменных, необходимо использовать динамический SQL.
например:
объявить @fname varchar(20)
set @fname = 'Имя_файла'
Выберите @fname из tableName — ошибка, ошибка не будет выдана, но результатом будет фиксированное значение FiledName, а это не то, что вам нужно.
Exec('select ' + @fname + ' from tableName') — Обратите внимание, что вокруг одинарных кавычек до и после знака плюс есть пробелы.
Конечно, вы также можете преобразовать строку в переменную форму.
объявить @fname varchar(20)
set @fname = 'FiledName' --Установить имя поля
объявить @s varchar(1000)
set @s = 'выбрать' + @fname + 'из имени_таблицы'
Exec(@s) -- успех
exec sp_executesql @s — это предложение сообщит об ошибке
объявить @s Nvarchar(1000) — обратите внимание, что он изменен на nvarchar(1000)
set @s = 'select ' + @fname + ' from tableName'
Exec(@s) -- успех
exec sp_executesql @s — это предложение правильное
3. Выходные параметры
объявить @num int,
@sqls nvarchar(4000)
set @sqls='select count(*) from tableName'
руководитель(@sqls)
--Как поместить результат выполнения exec в переменную?
объявить @num int,
@sqls nvarchar(4000)
set @sqls='select @a=count(*) from tableName '
exec sp_executesql @sqls,N'@a int output',@num output
выберите @num
Если вы хотите использовать одинарные кавычки '' в строке оператора SQL, вы можете использовать ''''