动态Sql错误中的多个列

时间:2013-09-15 14:03:13

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

当我这样做时

declare @cmd nvarchar(50)
set @cmd ='SELECT category_id FROM tbl_BHMCategoryMaster '
exec(@cmd)

查询正确执行。

但是当我这样做时

declare @cmd nvarchar(50)
set @cmd ='SELECT [category_id],[category_name],[Basic],[Dimension],[In_Out],[ProfileHand],[Glass],[Hinge],[Edgeband]  FROM [tbl_BHMCategoryMaster] ' 
exec(@cmd)

我收到此错误,我不知道我做错了什么

  

Msg 105,Level 15,State 1,Line 1
  字符串'Dime'后面的未闭合引号。
  消息102,级别15,状态1,行1   'Dime'附近的语法不正确。

但是当我尝试这个时再次

 exec('SELECT [category_id],[category_name],[Basic],[Dimension],[In_Out],[ProfileHand],[Glass],[Hinge],[Edgeband]  FROM [tbl_BHMCategoryMaster]')

它运作正常。

可能有很多替代方案,但我想详细了解问题,以便下次不要面对。如果有人可以点亮它会有很大的帮助。谢谢:))

1 个答案:

答案 0 :(得分:2)

您尚未声明@cmd足够长。试试这个:

declare @cmd nvarchar(max);
set @cmd = N'SELECT [category_id],[category_name],[Basic],[Dimension],[In_Out],[ProfileHand],[Glass],[Hinge],[Edgeband]  FROM [tbl_BHMCategoryMaster] ' ;
exec(@cmd);