本文主要介绍的是Oracle游标提取相关的数据的实际操作方案,首先我们要从Oracle游标中得到一行相关的数据,我个人提议你使用FETCH命令。当每一次提取数据后,Oracle游标都指向结果集的下一行。语法如下:
FETCHcursor_nameINTOvariable[,variable,...]
对于SELECT定义的Oracle游标的每一列,FETCH变量列表都应该有一个变量与之相对应,变量的类型也要相同。
例:
SETSERVERIUTPUTON DECLARE v_enameEMP.ENAME%TYPE; v_salaryEMP.SALARY%TYPE; CURSORc_empISSELECTename,salaryFROMemp; BEGIN OPENc_emp; FETCHc_empINTOv_ename,v_salary; DBMS_OUTPUT.PUT_LINE('SalaryofEmployee'||v_ename ||'is'||v_salary); FETCHc_empINTOv_ename,v_salary; DBMS_OUTPUT.PUT_LINE('SalaryofEmployee'||v_ename ||'is'||v_salary); FETCHc_empINTOv_ename,v_salary; DBMS_OUTPUT.PUT_LINE('SalaryofEmployee'||v_ename ||'is'||v_salary); CLOSEc_emp; END
这段代码无疑是非常麻烦的,如果有多行返回结果,可以使用循环并用Oracle游标属性为结束循环的条件,以这种方式提取数据,程序的可读性和简洁性都大为提高,下面我们使用循环重新写上面的程序:
SETSERVERIUTPUTON DECLARE v_enameEMP.ENAME%TYPE; v_salaryEMP.SALARY%TYPE; CURSORc_empISSELECTename,salaryFROMemp; BEGIN OPENc_emp; LOOP FETCHc_empINTOv_ename,v_salary; EXITWHENc_emp%NOTFOUND; DBMS_OUTPUT.PUT_LINE('SalaryofEmployee'||v_ename ||'is'||v_salary); END
相关文章
标签:Oracle