5、长度约束。如NUMBER(4),CHAR(10)等都是错误的。[RETURNdatatype]是可选的,表示游标返回数据的数据。如果选择,则应该严格与select_statement中的选择列表在次序和数据类型上匹配。一般是记录数据类型或带“%ROWTYPE”的数据。l打开游标:就是执行游标所对应的SELECT语句,将其查询结果放入工作区,并且指针指向工作区的首部,标识游标结果集合。如果游标查询语句中带有FORUPDATE选项,OPEN语句还将锁定数据库表中游标结果集合对应的数据行。格式: OPEN cursor_name[([
8、FETCH语句,将操作失败,并将游标属性%NOTFOUND置为TRUE。所以每次执行完FETCH语句后,检查游标属性%NOTFOUND就可以判断FETCH语句是否执行成功并返回一个数据行,以便确定是否给对应的变量赋了值。l对该记录进行处理;l继续处理,直到活动集合中没有记录;l关闭游标:当提取和处理完游标结果集合数据后,应及时关闭游标,以释放该游标所占用的系统资源,并使该游标的工作区变成无效,不能再使用FETCH语句取其中数据。关闭后的游标可以使用OPEN语句重新打开。格式: CLOSE cursor_name; 注:定义的游标
9、不能有INTO子句。例1.查询前10名员工的信息。 DECLARE CURSOR c_cursor IS SELECT first_name
10、
11、 last_name, Salary FROM EMPLOYEES WHERE rownum<11; v_ename EMPLOYEES.first_name%TYPE; v_sal EMPLOYEES.Salary%TYPE; BEGIN OPEN c_cursor; FETCH c_cursor INTO v_ename, v_s
12、al; WHILE c_cursor%FOUND LOOP DBMS_OUTPUT.PUT_LINE(v_ename
13、
14、'---'
15、
16、to_char(v_sal) ); FETCH c_cursor INTO v_ename, v_sal;