当前位置: 代码迷 >> Sql Server >> 一个简单的动态SQL语句,为什么总报错,郁闷~该如何处理
  详细解决方案

一个简单的动态SQL语句,为什么总报错,郁闷~该如何处理

热度:287   发布时间:2016-04-27 20:23:56.0
一个简单的动态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語句的時候需要做下轉換
  相关解决方案