如何将sp_executesql与参数一起使用

时间:2011-09-07 07:48:27

标签: sql sql-server sql-server-2008

我写了一个查询:

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'附近的语法不正确SELECT数量,COUNT(o.orderID)   来自订单o LEFT OUTER JOIN [订单详情'。

1 个答案:

答案 0 :(得分:0)

因为您正在构建字段更改的动态查询,所以这不能通过常规参数来完成。您必须使用该参数来构建查询字符串 - 如果您可以从用户输入提供@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';