读书人

一个简单的动态SQL语句,为什么总报错,

发布时间: 2012-01-15 22:57:48 作者: rapoo

一个简单的动态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句的候需要做下

读书人网 >SQL Server

热点推荐