|
? 说明:可以看到该循环形式非常简单,隐含了记录变量的定义、游标的打开、提取和关闭过程。Emp_record为隐含定义的记录变量,循环的执行次数与游标取得的数据的行数相一致。? 【训练2】? 另一种形式的游标循环。?
Sql代码?
- SET?SERVEROUTPUT?ON? ??
- BEGIN??
- ?FOR?re?IN?(SELECT?ename?FROM?EMP)??LOOP ??
- ??DBMS_OUTPUT.PUT_LINE(re.ename) ??
- ?END?LOOP; ??
- END;??
执行结果为:?
Sql代码?
- SMITH ??
- ALLEN ??
- WARD ??
- JONES??
??? 说明:该种形式更为简单,省略了游标的定义,游标的SELECT查询语句在循环中直接出现。? 显式游标属性? 虽然可以使用前面的形式获得游标数据,但是在游标定义以后使用它的一些属性来进行结构控制是一种更为灵活的方法。显式游标的属性如下所示。?
Sql代码?
- 游标的属性???返回值类型???意????义 ??
- %ROWCOUNT???整型??获得FETCH语句返回的数据行数 ??
- %FOUND??布尔型?最近的FETCH语句返回一行数据则为真,否则为假 ??
- %NOTFOUND???布尔型?与%FOUND属性返回值相反 ??
- %ISOPEN?布尔型?游标已经打开时值为真,否则为假??
可按照以下形式取得游标的属性:? 游标名%属性? 要判断游标emp_cursor是否处于打开状态,可以使用属性emp_cursor%ISOPEN。如果游标已经打开,则返回值为“真”,否则为“假”。具体可参照以下的训练。? 【训练1】? 使用游标的属性练习。?
Sql代码?
- SET?SERVEROUTPUT?ON??
- DECLARE??
- ??V_ename?VARCHAR2(10); ??
- ??CURSOR?emp_cursor?IS? ??
- ??SELECT?ename?FROM?emp; ??
- BEGIN??
- ?OPEN?emp_cursor; ??
- ?IF?emp_cursor%ISOPEN?THEN??
- LOOP ??
- ???FETCH?emp_cursor?INTO?v_ename; ??
- ???EXIT?WHEN?emp_cursor%NOTFOUND; ??
- ???DBMS_OUTPUT.PUT_LINE(to_char(emp_cursor%ROWCOUNT)||‘-‘||v_ename); ??
- ??END?LOOP; ??
- ?ELSE??
- ??DBMS_OUTPUT.PUT_LINE(‘用户信息:游标没有打开!‘); ??
- ?END?IF; ??
- ?CLOSE??emp_cursor; ??
- END;??
(编辑:PHP编程网 - 湛江站长网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|