本章介绍icursor()函数的多种用法。
描述:
通过索引与条件过滤实表/复组表
语法:
T.icursor(C,…;w,I)
备注:
用索引I和条件w过滤实表/复组表T,I省略时自动找索引。
T为复组表时每个分表分别使用索引,不一定每个分表都有索引,没有则遍历。
参数:
T
|
实表/复组表
|
C
|
实表中的列名,缺省时读取全部列
|
w
|
过滤条件,语法支持>、>=、<、<=、==、contain,过滤条件中用到的T表字段必须跟索引中的索引字段一致
|
I
|
索引名称,可省略
|
选项:
@s
|
确保返回结果集对I有序且可支持大结果集
|
@u
|
从左到右处理多&&条件,缺省会根据条件优化过滤次序
|
返回值:
单路游标
示例:
|
A
|
|
1
|
=file("D:\\emp1.ctx")
|
|
2
|
=A1.create(#EID,NAME,DEPT,GENDER)
|
创建组表的基表
|
3
|
=demo.cursor("select
EID,NAME,DEPT,GENDER from employee where EID< 100")
|
|
4
|
=A2.append(A3)
|
|
5
|
=A4.index(test_index,GENDER=="F";DEPT;EID)
|
创建索引test_index
|
6
|
=A4.icursor(;DEPT=="HR",test_index)
|
使用索引test_index查询出DEPT为HR的所有列的数据,结果返回游标
|
7
|
=A6.fetch()
|
获取游标中的数据

|
8
|
=A4.icursor@u(;like(DEPT,"*ale*")&&EID>=50,test_index).fetch()
|
从左到右处理多&&条件,使用索引test_index查询含有“ale”的DEPT,并且EID大于等于50的数据

|
9
|
=file("emp.ctx":[2,3])
|
返回文件组
|
10
|
=A9.open()
|
打开复组表
|
11
|
=A10.index(index_cp,SALARY>10000;GENDER;)
|
为复组表创建索引index_cp
|
12
|
=A10.icursor(;GENDER=="F",index_cp).fetch()
|
使用索引index_cp查询SALARY为F的数据

|