SQL字符串拼接
DECLARE @pageIndex int--第几页
SET @pageIndex=1
DECLARE @pageSize int--每页显示条数
SET @pageSize=1
declare @SQL nvarchar(1000)
set @SQL=' select top ' + @pageSize+ ' from tbTeacherPlan where tpId not in (select top ' + (@pageIndex*@pageSize)+ ' tpId from tbTeacherPlan)'
Exec(@SQL)
PRINT @SQL
exec sp_executesql @SQL
消息 245,级别 16,状态 1,第 8 行
在将 varchar 值 ' select top ' 转换成数据类型 int 时失败。 这是为什么你 大虾们??
------解决方案-------------------- @pageSize==>>ltrim(@pageSize)
(@pageIndex*@pageSize)==>>ltrim(@pageIndex*@pageSize)
------解决方案--------------------这个问题是隐式转换导致的,具体可以看这个
http://msdn.microsoft.com/zh-cn/library/ms191530.aspx
更改脚本
所有的字符串前面都加N''
所有的 int型都更改为cast(@pageSize as nvarchar(5))
------解决方案--------------------不好意思,我的积分不够发贴的,所以来借楼主的帖子问个问题
如何更新WinXp x64的ADO控件版本?
我在Win7 x64上开发的VC程序,用的ADO6.1版本连接sql,要在 WinXP x64上使用,但是xp64上的ADO只有2.8版本,这个要怎么解决啊,可不可以升级xp64上的ADO版本?
现在我开发完的程序在xp64机器上报一个错误,弹出一个错误框,但是里面什么信息也没有,是个空白,我调试过,是遇到了__uuidof 或 _bstr_t 语句时会弹同这个错误,请大侠指教
------解决方案--------------------set @SQL=' select top ' + @pageSize+ ' from tbTeacherPlan where tpId not in (select top ' + (@pageIndex*@pageSize)+ ' tpId from tbTeacherPlan)'
你这一句就两处错误,1@p参数都是int型与字符串拼接的话要转换为字符型
2,' select top ' + @pageSize+ ' 这里未拼接列名' select top ' + @pageSize+ ' * from
通常exec sp_executesql @SQL 是参数化执行语句,应该尽可能的不要拼接参数而是传递参数
DECLARE @pageIndex int--第几页
SET @pageIndex=1
DECLARE @pageSize int--每页显示条数
SET @pageSize=1
declare @SQL nvarchar(4000)
set @SQL=' select top (@pageSize) * from tbTeacherPlan where tpId not in (select top (@pageIndex*@pageSize) tpId from tbTeacherPlan)'
Exec(@SQL)
PRINT @SQL
exec sp_executesql @SQL,N'@pageSize int,@pageindex int',@pageSize,@pageIndex