2013-07-02 24 views
8

aşağıdaki link göre özel sayfalama yapmak istiyorum:Pageing

ama benim saklı yordam Informix içinde: ben bu solution

bulmak

yüzden eşdeğer row_number() aramak benim prosedür kullanıldığında bir

ama, thi içinde "atla"

SQL hatası -944, "ilk" "sınırı" kullanmak Cann't aşağıdaki hatayı olsun bağlamı!


nasıl informix kurallarına önceki linkte saklı yordam yeniden yazmak?

benim prosedür birden birlikler vardır şu şekildedir:

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 ...... 

cevap

1

bu

; 
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 
+2

Bu, OP'nin istediği şey olan Informix sözdizimi değildir. – RET

+1

@ notasyonu Informix değildir; OLAP işlevselliği Informix 12.10'da, inanıyorum. –

2

Sen kullanamazsınız deneyin FIRST, SKIP vb UNION koleksiyon içinde her SELECT deyimi kendi kendine yeten çünkü.

Belki SELECT ... UNION ... SELECT mantığını kapsüller bir VIEW oluşturmayı deneyin, ve sonra buna FIRST/SKIP mantığı geçerlidir.

+0

SKIP 100 İLK 100 SEÇMEKTEDİR * TABLO (MULTİSET (SELECT ... UNION SELECT ...) 'işinden? –