游标
游标是查询出来的结果集作为一个单元做有效的处理。游标可以定在该单元的特定行,从结果集中的当前行检索一行或多行。可以对结果集当前行做修改,一般在需要逐条处理数据的时候使用。
我们接下来对一个现有的游标做分析
DECLARE
EXERROR EXCEPTION;#异常处理部分的自定义异常
GOEND EXCEPTION;
p_NUM NUMBER;
p_INFO VARCHAR2(2000);
vr_CURSOR TEST%ROWTYPE;
TYPE CURTYP IS REF CURSOR;
CUR_TEST CURTYP;#定义一个游标
BEGIN
#col,id,VPN是TEST表的列
OPEN CUR_TEST FOR SELECT * FROM TEST WHERE col LIKE 'PTCG%' AND ID='TTTTF3' AND VPN LIKE 'F4G%';#打开游标存放SELECT到的数据
FETCH CUR_TEST INTO vr_CURSOR;#取出游标中的一行数据放到变量vr_CURSOR中
WHILE CUR_TEST%FOUND LOOP#当取到值的时候,循环
UPDATE TEST SET ID='TTTTF4' WHERE col=vr_CURSOR.col AND VPN=vr_TEST.VPN; #更新TEST表中的数据
COMMIT;#作完UPDATE,INSERT,DELETE操作后都要提交
FETCH CUR_TEST INTO vr_CURSOR;#再取出下一条数据放到变量vr_CURSOR中
END LOOP;#循环结束
CLOSE CUR_TEST;#关闭游标
EXCEPTION
WHEN EXERROR THEN
rollback;#當出現異常直接回滾
p_NUM := 0;
p_INFO := p_NUM||SQLERRM;
WHEN OTHERS THEN
rollback;
p_NUM :=0;
p_INFO := p_NUM||SQLERRM;
END;