第6章光标.ppt
文本预览下载声明
Oracle数据库技术;教学目标;重点;游 标 ;;;使用游标的基本方法 ;使用游标的基本方法 ;使用游标的基本方法 ;;Fetch cursor_name into v1,v2,…,vn;
Or
Fetch cursor_name into cursor_name%rowtype;
Or
Fetch cursor_name into table_name%rowtype;使用游标的基本方法 ;;使用游标的基本方法 ;使用游标的基本方法 ;使用游标的基本方法 ;While loop开始之前的第一个FETCH语句对确保WHILE LOOP循环的条件值为TRUE是非常必要的。使用%FOUND属性来检查,如果没有前面的FETCH语句,那么%FOUND属性就不 会为真(即使有记录存在), %NOTFOUND 属性 的值和%FOUND 值一样都为NULL。
与LOOP ……END LOOP对照,后者的 EXIT判断语句之前要有一FETCH 语句;使用游标FOR循环
DECLARE
CURSOR C1 IS
SELECT VIEW_NAME FROM ALL_VIEWS
WHERE ROWNUM = 10
ORDER BY VIEW_NAME;
BEGIN
FOR I IN C1 LOOP
DBMS_OUTPUT.PUT_LINE(I.VIEW_NAME);
END LOOP;
EXCEPTION
WHEN OTHERS THEN NULL;
END;;FOR LOOP游标的索引不需要声明,它有PL/SQL隐式的定义为cursor%rowtype类型。
当需要在一个游标中无条件的处理所有行,用FOR LOOP语句是很好的。
对应例子文件中的第5-10例;练习:
使用游标实现:将任意一门(每门)课程成绩高于课程平均分的学生所选的所有课程的姓名,课程名,成绩格式化输出。;代码; 可以在游标名称后面 ,用括号括起参数的名称和类型来定义游标的参数。这些参数叫形参。实参由OPEN语句传递到形参中。;带参数的光标
DECLARE
CURSOR C1(VIEW_PATTERN VARCHAR2) IS
SELECT VIEW_NAME
FROM ALL_VIEWS
? WHERE VIEW_NAME LIKE VIEW_PATTERN||%
AND? ROWNUM=10 ?
ORDER BY VIEW_NAME;
?? VNAME VARCHAR2(40);;BEGIN??? FOR I IN C1(USER_AR) LOOP
????? DBMS_OUTPUT.PUT_LINE(I.VIEW_NAME);
END LOOP;
DBMS_OUTPUT.PUT_LINE(‘’);
FOR I IN C1(USER) LOOP
? DBMS_OUTPUT.PUT_LINE(I.VIEW_NAME);
END LOOP;
EXCEPTION WHEN OTHERS THEN
?? DBMS_OUTPUT.PUT_LINE(AAA);
END;
对应例子文件中的第11,12例;SELECT FOR UPDATE游标;SELECT FOR UPDATE游标;SELECT FOR UPDATE游标;SELECT FOR UPDATE游标;隐式游标;隐???游标;隐式游标;游标变量-动态游标 ;游标变量-动态游标 ;游标变量-动态游标 ;使用游标变量;使用游标变量;使用游标变量;使用游标变量;小结(1);小结(2)
显示全部