关于用存储过程来分页,并且不要需要主键的,除了用游标的方法以外,请问有什么好的方案?

解决方案 »

  1.   

    1、我用过有主键排序的,这种方法效率比较高,但有时不一定是按主键来排序啊,比如:我有一个列表,我点击列表标题就按标题的字段排序,这样这种方法就行不通了2、游标我不太熟悉,但我从网上考了一个,是:
    create  procedure XiaoZhengGe
    @sqlstr nvarchar(4000), --查询字符串
    @currentpage int, --第N页
    @pagesize int --每页行数
    as
    set nocount on
    declare @P1 int, --P1是游标的id
     @rowcount int
    exec sp_cursoropen @P1 output,@sqlstr,@scrollopt=1,@ccopt=1,@rowcount=@rowcount output
    select ceiling(1.0*@rowcount/@pagesize) as 总页数--,@rowcount as 总行数,@currentpage as 当前页 
    set @currentpage=(@currentpage-1)*@pagesize+1
    exec sp_cursorfetch @P1,16,@currentpage,@pagesize 
    exec sp_cursorclose @P1
    set nocount off但游标我遇到一个比较奇怪的问题:就当我sql语句是select f_id,firm_name,testt='aaa' from firm_bx Order By f_id DESC时,就读取不出testt这个字段,报错描述是:DataBinder.Eval:“System.Data.Common.DbDataRecord”不包含名称为 testt 的属性。不知道谁有什么好方法吗?在这里表示谢过了!