在Oracle数据库中
游标包含隐含游标和显式游标。其中隐含游标又被称作SQL游标,它专门用于处理SELECT INTO、INSERT和UPDATE以及DELETE语句。
而显式游标用于处理多行的SELECT语句。
oracle 游标有4个属性: %ISOPEN , %FOUND , %NOTFOUND, %ROWCOUNT。
(1)%ISOPEN 判断游标是否被打开,如果打开%ISOPEN 等于true,否则等于false
(2)%FOUND 和%NOTFOUND 判断游标所在的行是否有效,如果有效,则%FOUND等于true,否则等于false
(3)%ROWCOUNT 返回当前位置为止游标读取的记录行数。
1、使用显式游标
为了处理SELECT返回的多行数据,开发人员可以使用显式游标。使用显式游标包括:
(1)定义游标
CURSOR cursor_name IS select-statement;
(2)打开游标
OPEN cursor_name
(3)提取数据
游标打开之后,SELECT语句的结果被临时存到游标结果集中,为了提取结果集中的数据,需要使用FETCH语句提取游标数据。
FETCH cursor_name INTO variable1,varable2,variable3.......(需要使用循环来处理游标结果集的所有数据)
(4)关闭游标
CLOSE cursor_name;
eg.
--语句块,批量执行语句,工资低于2000的加上10%。
DECLARE
CURSOR emp_cursor IS
SELECT ename,sal FROM emp FOR UPDATE;
emp_record emp_cursor%ROWTYPE;
BEGIN
OPEN emp_cursor;
LOOP
FETCH emp_cursor INTO emp_record;
EXIT WHEN emp_cursor%NOTFOUND;
IF emp_record.sal < 2000 THEN
UPDATE emp SET sal = sal*1.1 WHERE CURRENT OF emp_cursor;
END IF;
END LOOP;
END;
/