Как использовать sp_executesql с параметрами - PullRequest
0 голосов
/ 07 сентября 2011

Я написал запрос:

DECLARE @Col_Select NVARCHAR(10);
SET @Col_Select = N'[od.orderID]';

DECLARE @Query NVARCHAR(4000);
SET @Query = N'SELECT quantity, COUNT(o.orderID) FROM orders o LEFT OUTER JOIN [order details] od ON o.orderid = @Col_Select group by od.quantity';

EXEC sp_executesql @Query,@Col_Select

Что не так с моим запросом?

Я получаю эту ошибку:

Неверный синтаксис рядом с 'od.orderI) ВЫБРАТЬ количество, COUNT (o.orderID) ИЗ заказов o ВЛЕВО НАРУЖНОЕ СОЕДИНЕНИЕ [детали заказа '.

1 Ответ

0 голосов
/ 07 сентября 2011

Поскольку вы создаете динамический запрос, в котором изменяются поля, это невозможно сделать обычными параметрами. Вы должны будете использовать этот параметр для построения строки запроса - будьте очень осторожны, если вы можете предоставить @Col_Select из пользовательского ввода, чтобы избежать атак SQL-инъекций!

SET @Query=N'SELECT quantity,COUNT(o.orderID) FROM orders o LEFT OUTER JOIN [order details] od ON o.orderid = ' + @Col_Select + ' group by od.quantity';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...