Comments 7
Во всех ваших примерах динамический T-SQL вообще не нужен. Для выполнения запросов с разными параметрами сгодится обычная хранимая процедура.
+1
Для примера я взял очень, очень простые запросы. Я же не буду здесь же приводить примеров запросов по нескольку сотен и тысяч строк, где я это использую на практике.
А вот про построение сложных запросов с практическим применением я расскажу в следующих статьях. Для затравки: использование списка условий.
А вот про построение сложных запросов с практическим применением я расскажу в следующих статьях. Для затравки: использование списка условий.
0
можно добавить про использование
uniqueidentifier
в
dynamic sql
CAST(NEWID() AS NVARCHAR(36))
0
В любом случае, для написания параметризированных динамических запросов лучше использовать sp_executesql, а не execute. Тогда вы сможете явно указать типы переменных и защититесь от SQL-инъекций. У вас пропадут проблемы со строками, датами, числами и их округлением + кеширование заработает.
declare @i int
declare @paramDefinition nvarchar(500) = '@num int';
declare @sql nvarchar(100) = 'select @num'
EXECUTE sp_executesql @sql, @paramDefinition, @num = @i -- NULL не приводит к ошибке
+9
Правильный код для п.5 (про кавычки в строках)
declare @s varchar(100) = 'Number ''1'' '
declare @paramDefinition nvarchar(500) = '@str varchar(100)';
declare @sql nvarchar(100) = 'select String = @str'
EXECUTE sp_executesql @sql, @paramDefinition, @str = @s
+1
Век живи, век учись. )) спасибо.
0
Sign up to leave a comment.
Передача параметров в динамический запрос в T-SQL