SQL> select * from bao_temp 2 /COL1 COL2 SEQ ---------- ---------- ---------- A 31 1 A 11 3 A 21 2 B 11 4 B 21 3 B 31 2 C 31 2 C 11 4 C 21 3 B 45 1 C 78 1選取了 11 列目前歷時: 00:00:00.25 ---------------------------------------------------- SQL> declare 2 cursor cur_col1 is 3 select distinct col1 4 from bao_temp; 5 is_col1 varchar2(10); 6 is_count number(10); 7 begin 8 select count(*) into is_count 9 from (select distinct col1 10 from bao_temp); 11 dbms_output.put_line('cursor data record number is : '||to_char(is_count)) ; 12 open cur_col1; 13 loop 14 fetch cur_col1 into is_col1; 15 exit when cur_col1%notfound; 16 17 dbms_output.put_line('bao_temp col1 is : '||is_col1); 18 19 end loop; 20 close cur_col1; 21 end; 22 / cursor data record number is : 3 bao_temp col1 is : A bao_temp col1 is : B bao_temp col1 is : CPL/SQL 程序順利完成目前歷時: 00:00:00.81
我也想知道这个,现在我都是在这之前,先用游标的条件,select count(*) into rowCnt from ..where....
不知道哪位有好点的方法没?:)
-----------------------------------------------------------------------------------------
你的这条语句好像并没有从Cursor中取什么东西啊
好像9I版本有CUR%ROWCOUNT属性,在8I好像没有
%ROWCOUNT,是在FETCH之后才会有的
没办法了么?
2 /COL1 COL2 SEQ
---------- ---------- ----------
A 31 1
A 11 3
A 21 2
B 11 4
B 21 3
B 31 2
C 31 2
C 11 4
C 21 3
B 45 1
C 78 1選取了 11 列目前歷時: 00:00:00.25
----------------------------------------------------
SQL> declare
2 cursor cur_col1 is
3 select distinct col1
4 from bao_temp;
5 is_col1 varchar2(10);
6 is_count number(10);
7 begin
8 select count(*) into is_count
9 from (select distinct col1
10 from bao_temp);
11 dbms_output.put_line('cursor data record number is : '||to_char(is_count)) ;
12 open cur_col1;
13 loop
14 fetch cur_col1 into is_col1;
15 exit when cur_col1%notfound;
16
17 dbms_output.put_line('bao_temp col1 is : '||is_col1);
18
19 end loop;
20 close cur_col1;
21 end;
22 /
cursor data record number is : 3
bao_temp col1 is : A
bao_temp col1 is : B
bao_temp col1 is : CPL/SQL 程序順利完成目前歷時: 00:00:00.81
我觉得是这样,你为什么要在取游标之前就想知道总数,可否把想法说出来
探讨一下?
我是想在得到这个记录集后就直接拿总行数来做返回参数了,而不用再select count一次了
--------------------------------------------------------------------------
baojianjun(包子) ( ) 信誉:112 包子的意思是想说Select Count一次并不耗费多少时间?
FETCH之后不是可以通过%ROWCOUNT来解决了吗?