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