日期:2014-05-19  浏览次数:20603 次

一个简单的动态SQL语句,为什么总报错,郁闷~~~
DECLARE   @SQL   NVARCHAR(3000)
DECLARE   @TbName   varchar(50)
SET   @TbName= 'type_Trade '
DECLARE   @typeParentID   INT
SET   @typeParentID=0
SET   @SQL= 'SELECT   typeID,typeName   FROM   '   +   @TbName   +   '   WHERE   typePath= '   +   @typeParentID
EXEC(@SQL)

如题,报错误如下:
将   varchar   值   'SELECT   typeID,typeName   FROM   type_Trade   WHERE   typePath= '   转换为数据类型为   int   的列时发生语法错误。

为什么?

------解决方案--------------------
SET @SQL= 'SELECT typeID,typeName FROM ' + @TbName + ' WHERE typePath= ' + ltrim(@typeParentID)
------解决方案--------------------
DECLARE @SQL NVARCHAR(3000)
DECLARE @TbName varchar(50)
SET @TbName= 'type_Trade '
DECLARE @typeParentID INT
SET @typeParentID=0
SET @SQL= 'SELECT typeID,typeName FROM ' + @TbName + ' WHERE typePath= ' + Cast(@typeParentID As Varchar)
EXEC(@SQL)
------解决方案--------------------
INT, DateTime類型在拼接動態SQL語句的時候需要做下轉換