【问题标题】:How using sp_executesql with parameters如何使用带参数的 sp_executesql
【发布时间】:2011-09-07 07:48:26
【问题描述】:

我写了一个查询:

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 quantity,COUNT(o.orderID) 附近的语法不正确 FROM orders o LEFT OUTER JOIN [order details'。

【问题讨论】:

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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-04-13
    • 2021-11-16
    • 2016-07-09
    • 2023-03-27
    • 1970-01-01
    • 2019-05-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多