求 informix 查询语句 (有关 select first N * ...)


为了方便 程序 实现分页效果

本人希望同过sql语句实现读取记录集中 第n 到第 m条记录,用sql语句该怎么写?

用 select first n * from table
只能读取前n条

在informix的sql中 有没有方法实现我想实现的效果呢?

9 个解决方案

#1


这个first 似乎很邪门
只要有first ,他创建临时表不行,创建视图也不行~,作为嵌套查询子查询也不行~
郁闷呀

#2


select first 10 * from table into temp t_table //出错, can not use "first" in this context

select first 15 * from table where rowid not in (select first 5 rowid from table)//错误同上

create view c_table as (select first 10 * from table) //出错,错误同上

#3


想建立一个游标
但是
在informix 的query_language中输入
declare tb1_cur cursor for select col1 from tb1;
run后出先语法错误
不知道是怎么回事

#4


我也不太明白,帮你顶一下吧

#5


用游标呢?

#6


想建立一个游标
但是
在informix 的query_language中输入
declare tb1_cur cursor for select col1 from tb1;
run后出先语法错误
不知道是怎么回事

#7


这个用ec 还好处理。
用sql 直接来处理 还没想出来,
我做了个 存储过程 ,你参考一下 ,用了计数器来控制 记录号 ,但我觉得效率不高。
create procedure mn(m integer,n integer)     returning char(9),char(40);

define jg1 like tab.jg;
define mc1 like tab.mc;
define cnt integer;
let cnt = 0;
foreach select jg,mc into jg1,mc1 from tab
        let cnt = cnt +1 ;
        if ( cnt < m ) then
                continue foreach;
        end if;
        if ( cnt > n ) then
                exit foreach;
        end if;
        return jg1,mc1     with resume;
end foreach;
end procedure;

execute procedure mn ( 2,10);

#8


上面是我知道的方法,不重复了。
若要效率提高点,建议可以把记录放到某个表上,不过也一样了。
或者记录不多的,放到session也可以的,嘿嘿

#9


恩,谢谢楼上的几位~
这个informix的sql真是奇怪呀
同样的用法用在sqlserver上就没有什么问题
偏偏用informix上就不行了
不知道是我们技术不行,还是这个IMB设计的不好~~~

我是初学者~infromix的存储过程还不怎么会用
呵呵~
智能推荐

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
© 2014-2019 ITdaan.com 粤ICP备14056181号  

赞助商广告