7.2.2循环游标

在用游标读取数据时,还可以用for语句来循环游标中的数据。如:

 

A

B

1

=file("Order_Books.txt")

 

2

=A1.cursor@t()

0

3

for A2,1000

=A3.select(SalesID==1).sum(Amount)

4

 

>B2=B2+B3

A2中创建游标,并在A3中循环游标,每次读出1000条记录,所有记录遍历完成后自动关闭游标。在A3的代码块中,根据每次取出的序表来计算1号销售员的总销售额,并记录在B2中,结果如下:

 

在循环游标时,有时并不会遍历所有数据,如:

 

A

B

C

1

=file("Order_Books.txt")

 

 

2

=A1.cursor@t()

[]

 

3

for A2,1000

=A3.select(SalesID==1)

>B2=B2|B3

4

 

if B2.len()>=5

>B2=B2(to(5))

5

 

 

break

6

>A2.close()

 

 

A2中创建游标,并在A3中循环游标,每次读出1000条记录。在A3的代码块中,根据每次取出的数据选出1号销售员的销售记录,并记录在B2中。当找到前5条记录后,停止循环。此时,B2中结果如下:

必须要注意的是,当完成计算,用break退出循环时,游标中的数据并未全部读取出来,这和前一个例子中的情况不同,游标并不会自动关闭。因此,A6中调用了close函数,关闭游标以清除其占用内存。

 

fetchskin类似,循环游标时,也可以设定条件,每次读取数据时都执行到条件表达式发生变化为止,如:

 

A

B

C

1

=file("Order_Books.txt")

 

 

2

=A1.cursor@t()

=create(Date,Count,Amount)

 

3

for A2;Date

=A3.count()

=round(A3.sum(Amount))

4

 

>B2.insert(0,A3.Date,B3,C3)

 

此时在A3中每次读出1天的销售数据,在其代码块中计算出每天的交易笔数及总金额,记录在B2的序表中。计算完成后,B2中的结果如下: