分页存储过程

问题描述 投票:8回答:2

我想按照下列link做一个自定义分页:

但我的存储过程中的Informix:

所以我搜索相当于row_number()我觉得这solution

但是当我在过程中使用它,我得到以下错误:

SQL错误-944水湿使用“第一”,“限价”,“跳过”在这种情况下!


如何重写与Informix的规则的一个链接的存储过程?

我的过程有多个工会是这样的:

create procedure get_inbox_page(p_emp_num smallint, p_task_code smallint, p_main_code smallint default 0, p_year smallint default 0,p_page int)
returning varchar(60) as v_page_view, varchar(60) as v_task_name, smallint as v_task_code, varchar(60) as v_sp_name, varchar(60) as v_db_name, varchar(60) as v_column_key,  smallint as v_trans_serial, 
    DATETIME YEAR TO FRACTION(3) as v_trans_date, varchar(60) as v_trans_desc , varchar(60) as v_emp_name, varchar(60) as v_values_key, smallint as v_old_state_serial, 
    smallint as v_new_state_serial, smallint as v_main_code, smallint as v_year, varchar(60) as v_page_new, smallint as v_task_type, smallint as v_task_status,smallint as v_mail_maincode,smallint as v_mail_year,smallint as v_mail_number,smallint as v_trans_year , smallint as candidate_flag ;

Select  ......

UNION 

Select ......

UNION 

Select ......
sql asp.net linq informix
2个回答
2
投票

不能使用FIRSTSKIP等,因为SELECT集合中的每个UNION语句是自成体系。

也许你可以尝试创建一个封装VIEW逻辑SELECT ... UNION ... SELECT,然后应用FIRST / SKIP逻辑了这一点。


0
投票

尝试这个

;
WITH    tempPagedRecord
          AS ( SELECT   Column1 ,
                        Column2 ,
                        Column3
               FROM     TableName AS e--Your query with union 
               UNION ALL
               SELECT   Column1 ,
                        Column2 ,
                        Column3
               FROM     TableName AS e--Your query with union
             )
    SELECT  * ,
            ROW_NUMBER() OVER ( ORDER BY Column1 ASC ) AS RowNumber--RowNumber over some column
    FROM    tempPagedRecord 
 WHERE RowNumber BETWEEN(@PageIndex -1) * @PageSize + 1 AND(((@PageIndex -1) * @PageSize + 1) + @PageSize) - 1
© www.soinside.com 2019 - 2024. All rights reserved.