我有一个sales表有上千条记录,我想利用游标查询2000到3000之间的记录,我这样写对吗?
declare
cursor sales_cursor is select time_id from sales;
sales_record sales_cursor%ROWCOUNT;
begin
for sales_record IN sales_cursor loop
if sales_cursor%ROWCOUNT>=2000 and sales_cursor%ROWCOUNT<=3000
then
dbms_output.put_line('the result is:'||sales_record.time_id);
end if;
end loop;
end;
/编译后报如下错
ERROR at line 3:
ORA-06550: line 3, column 27:
PLS-00208: identifier 'ROWCOUNT' is not a legal cursor attribute
ORA-06550: line 3, column 14:
PL/SQL: Item ignored我刚学PLSQL,请大家帮我看看

解决方案 »

  1.   


    declare
    cursor sales_cursor is select time_id from sales;
    sales_record sales_cursor%rowtype;  
    --写错了不是%rowcount 是%rowtype
    begin
    for sales_record IN sales_cursor loop
    if sales_cursor%ROWCOUNT>=2000 and sales_cursor%ROWCOUNT<=3000
    then
    dbms_output.put_line('the result is:'||sales_record.time_id);
    end if;
    end loop;
    end;
      

  2.   

    DECLARE
      CURSOR sales_cursor IS
        SELECT time_id FROM sales;
      --sales_record sales_cursor%ROWCOUNT;这一行画蛇添足,去掉就OK
    BEGIN
      FOR sales_record IN sales_cursor LOOP
        IF sales_cursor%ROWCOUNT >= 2000 AND sales_cursor%ROWCOUNT <= 3000 THEN
          dbms_output.put_line('the result is:' || sales_record.time_id);
        END IF;
      END LOOP;
    END;
    /