首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

SQL字符串拼凑

2013-03-29 
SQL字符串拼接DECLARE @pageIndex int--第几页SET @pageIndex1DECLARE @pageSizeint--每页显示条数SET @p

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

热点排行