高人求教,在将nvarchar值转换成数据类型 int 时失败。

wuxin52115288 2013-07-11 05:15:00
ALTER PROCEDURE [dbo].[SP_Page]
(
@PageIndex int,--当前页面
@PageSize int,--页面大小
@SemesterName nvarchar(50),--学期名
@OrgID nvarchar(50),--园所ID
@sortColumn nvarchar(100),--按此列排序
--@tolRecord int output,--总记录数
@ParentID int--在Category表中的父ID
--@tolPage int output --总页数
)
as
if len(@sortColumn) = 0
set @sortColumn = ' a.PKStudentID '

declare @sql1 nvarchar(1000)
declare @sql2 nvarchar(max)
declare @PageLowerBound int
declare @PageUpperBound int

set @PageLowerBound = @PageSize*(@PageIndex-1)+1
set @PageUpperBound = @PageSize +@PageLowerBound

--exec sp_executesql @sql1,N'@temp int output',@tolRecord output
----获取页总数
--set @tolPage = ceiling(@tolRecord *1.0/@PageSize)
--查询记录
set @sql2 = '
select * from
(ROW_NUMBER() over(order by ' + @sortColumn+ ' ) as RoeNumber,
a.StudentNo,a.StudentName,a.Gender,a.Birthday,a.EnrolmentDate,b.CategoryName,
a.ParentsName,a.ParentsMobile,a.ParentsAddress,c.Score from student a,category b,student_semester_ships c,org d,classtb e,semester f
where b.ParentID =' +@ParentID +' and a.FKClassID = e.PKClassID and e.FKOrgID= d.PKOrgID and a.FKOrgID = d.PKOrgID and f.SemesterName='+ @SemesterName +'
and a.PKStudentID = c.FKStudentID and f.PKSemesterID = c.FKSemesterID and a.FKNurseryTypeID = b.PKCategoryID and d.PKOrgID='+ @OrgID + ' )rn
where rn.RowNumber between ' + convert(varchar(10),@PageLowerBound) + ' and ' + convert(varchar(10), @PageUpperBound)
EXEC sp_executesql @sql2

exec SP_Page 1,2,'2013年上学期','496cd2b0-336a-4135-84b8-14467903e653','a.PKStudentID','4'

--错误信息
消息 245,级别 16,状态 1,过程 SP_Page,第 28 行
在将 nvarchar 值 '
select * from
(ROW_NUMBER() over(order by a.PKStudentID ) as RoeNumber,
a.StudentNo,a.StudentName,a.Gender,a.Birthday,a.EnrolmentDate,b.CategoryName,
a.ParentsName,a.ParentsMobile,a.ParentsAddress,c.Score from student a,category b,student_semester_ships c,org d,classtb e,semester f
where b.ParentID =' 转换成数据类型 int 时失败。
...全文
2019 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
wuxin52115288 2013-07-12
  • 打赏
  • 举报
回复
以解决~谢谢各位了~
---涛声依旧--- 2013-07-12
  • 打赏
  • 举报
回复
打sql打印出来后分析
wuxin52115288 2013-07-11
  • 打赏
  • 举报
回复
引用 3 楼 tangguangqiang 的回复:
@ParentID int--在Category表中的父ID 你的@parentID转成varchar再拼接才行吧。
我把@ParentID的值在里面给转了 还是错误~
习惯性蹭分 2013-07-11
  • 打赏
  • 举报
回复
@ParentID int--在Category表中的父ID 你的@parentID转成varchar再拼接才行吧。
叶子 2013-07-11
  • 打赏
  • 举报
回复
b.ParentID= 把左右两边都转成字符串再比较。 例如 ltrim(b.ParentID) =' +ltrim(@ParentID) +'
Andy__Huang 2013-07-11
  • 打赏
  • 举报
回复
....... .... print @sql2 -->加上这一句测试,把打印出来的结果在查询分析器测试运行,就知道哪里错 EXEC sp_executesql @sql2 go

34,587

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧