2016-07-04 4 views
0

Я все время бью себя над этой кирпичной стеной. Это очень упрощенный пример ошибок, которые я получал. Я использую SSMS.MS SQL - Где синтаксические и скалярные ошибки?

DECLARE @myid nvarchar(10) = '5' 
DECLARE @sql nvarchar(2048) = 'SELECT id FROM Applications A WHERE [email protected]' 
EXECUTE sp_executesql @sql, @[email protected] 

Ошибки:

Msg 102, Level 15, State 1, Line 1 Неправильный синтаксис около '5'. Msg 137, Уровень 15, состояние 2, строка 1 Должен объявить скалярную переменную «@myid».

Почему я получаю синтаксис и скалярные ошибки? @myid определяется, правильно?

+0

пожалуйста закрыть вопрос, если у вас есть правильный ответ –

+0

Вы не должны использовать динамический SQL в запросе. он не нужен. –

ответ

4

sp_executesql необходимо получить определение параметров, которые вам не хватает. Таким образом, в вашем случае, вы должны использовать:

DECLARE @myid nvarchar(10) = '5'; 
DECLARE @sql nvarchar(2048) = 'SELECT id FROM Applications A WHERE [email protected]'; 
EXECUTE sp_executesql @sql, N'@myid nvarchar(10)', @[email protected]; 
+0

Да, это было! Спасибо. – SlowCoder74