游标被用的最多的是在存储过程中执行批量修改或是批量删除操作,比如删除一条主表记录之后,可以执行一个存储过程删除该记录对应的明细记录。 或者修改某张表的某个数据后反写另一张表的数据。这在ERP软件开发中是经常用到的,例如出库单实提之后要反写合同上的实提重量等等,这也要靠好的数据库设计来支持。
下面是一个ORACLE中在存储过程中使用游标的方法:
- PROCEDURE proc_fee_bymaindel (p_mainid IN VARCHAR2)
- IS
- --未删除前码单ID
- n_feeid VARCHAR2 (32);
- CURSOR cur
- IS
- SELECT feeid
- FROM EFI_FeeAdjustSubLine
- WHERE isdel = 0 AND mainid = HEXTORAW (p_mainid);
- BEGIN
- FOR cur_result IN cur
- LOOP
- BEGIN
- n_feeid := cur_result.feeid;
- proc_fee_del(n_feeid);
- EXCEPTION
- WHEN OTHERS
- THEN --插入发生错误的场合
- --给返回值赋值
- raise_application_error (-20000,
- '费用删除出错!'
- || SQLERRM
- );
- GOTO proc_end;
- END;
- END LOOP;
- <<proc_end>>
- NULL;
- END proc_fee_bymaindel;