动态查询生成不适用于SQL

时间:2015-06-23 13:22:10

标签: sql sql-server

我正在尝试执行以下SQL语句:

USE[Northwind] 
declare @MainQuery varchar(255),
@WhereClause varchar(255)


Select @WhereClause = 'where CustomerId =ALFKI'

Select @MainQuery ='Select * from Customers '+@WhereClause

execute(@MainQuery)

但是得到错误,

  

Msg 207,Level 16,State 1,Line 1   列名称无效' ALFKI'。

有什么问题?

2 个答案:

答案 0 :(得分:3)

ALFKI被视为列名。您生成的sql将如下所示:

select * from Customers where CustomerID = ALFKI

您想要的是您的代码如下所示:

select * from Customers where CustomerID = 'ALFKI'

要实现此目的,请将where子句生成器更改为:

Select @WhereClause = 'where CustomerId = ''ALFKI'' '

答案 1 :(得分:0)

试试这个

Select @WhereClause = 'where CustomerId =''ALFKI'''