执行分页存储过程的问题.

csover8 2012-12-12 01:55:11
以下是个分页的存储过程.

create PROC UP_Pager
@sql nvarchar(4000), --要执行的sql语句
@pagesize int=10, --每页的大小
@currentpage int=1, --要显示的页码
@recordcount int=0 out, --记录数
@pagecount int=0 out --总页数
AS

SET NOCOUNT ON
DECLARE @p1 int

--EXEC sp_cursoropen @p1 output, @sql, @scrollopt=1, @ccopt=1, @rowcount=@pagecount output
EXEC sp_cursoropen @p1 output, @S, @scrollopt=1, @ccopt=1, @rowcount=@pagecount output

--计算总页数
IF ISNULL(@pagesize, 0) < 1 SET @pagesize = 10
--SET @PageCount=(@PageCount+@pagesize-1)/@pagesize

--IF ISNULL(@currentpage,0)<1 OR ISNULL(@currentpage,0)>@pagesize
-- SET @currentpage=1
--ELSE
-- SET @currentpage=(@currentpage-1)*@pagesize+1

SELECT @recordcount=@pagecount,@pagecount=ceiling(1.0*@pagecount/@pagesize) ,@currentpage=(@currentpage-1)*@pagesize+1
SELECT @recordcount recordcount ,@pagecount pagecount
EXEC sp_cursorfetch @p1,16,@currentpage,@pagesize
EXEC sp_cursorclose @p1


GO



当把传入的@sql变量的 字符..超过4000个..应该怎么办?

像这样:

@sql = @sql1 + @sql2 + @sql3

exec UP_Pager @sql,99999,1

执行后有错误..
...全文
113 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
4000有点长了。。
程序人生み 2012-12-12
  • 打赏
  • 举报
回复
没有nvarchar(max) sql2000用Text
csover8 2012-12-12
  • 打赏
  • 举报
回复
varchar(8000)还不够用. nvarchar(max),在sql2000时还没有这个吧??
xuan.ye 2012-12-12
  • 打赏
  • 举报
回复
试过varchar(8000)吗?
ycproc 2012-12-12
  • 打赏
  • 举报
回复
加长度不就可以了。 我觉得这样的情况应当很少,很少见或者没有见过4000字符sql的执行方案。
我就是大神 2012-12-12
  • 打赏
  • 举报
回复
那你就弄varchar(max)呗

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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