Oracle第十四章PLSQL语言基础.pptVIP

  • 8
  • 0
  • 约2.36万字
  • 约 163页
  • 2022-07-13 发布于重庆
  • 举报
* 定义游标 语法 CURSOR cursor_name IS select_statement ; 说明 游标必须在PL/SQL块的声明部分进行定义; 游标定义时可以引用PL/SQL变量,但变量必须在游标定义之前定义; 定义游标时并没有生成数据,只是将定义信息保存到数据字典中; 游标定义后,可以使用cursor_name%ROWTYPE定义游标类型变量。 第九十四页,共一百六十三页。 * 打开游标 语法 OPEN cursor_name; 说明 检查变量的值 执行游标定义时对应的SELECT语句,将查询结果检索到工作区中。 游标指针指向第一个元组 一旦游标打开,就无法再次打开,除非先关闭 如果游标定义中的变量值发生变化,则只能在下次打开游标时才起作用。 第九十五页,共一百六十三页。 * 检索游标 语法格式 FETCH cursor_name INTO variable_list|record_variable; 说明 在使用FETCH语句之前必须先打开游标 对游标第一次使用FETCH语句时,游标指针指向第一条记录,因此操作的对象是第一条记录,使用后,游标指针指向下一条记录。 游标指针只能向下移动,不能回退 INTO子句中的变量个数、顺序、数据类型必须与工作区中每行记录的字段数、顺序以及数据类型一一对应。 第九十六页,共一百六十三页。 * 关闭游标 语法格式 CLOSE cursor_name; 说明 游标所对应的内存工作区变为无效,释放与游标相关的系统资源。 第九十七页,共一百六十三页。 * 根据输入的部门号查询某个部门的员工信息,部门号在程序运行时指定。 第九十八页,共一百六十三页。 * DECLARE v_deptno emp.deptno%TYPE; CURSOR c_emp IS SELECT * FROM emp WHERE deptno=v_deptno; v_emp c_emp%ROWTYPE; BEGIN v_deptno:=x; OPEN c_emp; LOOP FETCH c_emp INTO v_emp; EXIT WHEN c_emp%NOTFOUND; DBMS_OUTPUT.PUT_LINE(v_emp.empno|| || v_emp.ename|| || v_emp.sal || || v_deptno); END LOOP; CLOSE c_emp; END; 第九十九页,共一百六十三页。 * (2)显式游标的属性 %ISOPEN 布尔型。如果游标已经打开,返回TRUE,否则为FALSE。 %FOUND 布尔型,如果最近一次使用FETCH语句,有返回结果则为TRUE,否则为FALSE; %NOTFOUND 布尔型,如果最近一次使用FETCH语句,没有返回结果则为TRUE,否则为FALSE; %ROWCOUNT 数值型,返回到目前为止从游标缓冲区检索的元组数。 %BULK_ROWCOUNT(i) 数值型,用于取得FORALL语句执行批绑定操作时第i个元素所影响的行数。 第一百页,共一百六十三页。 * (3)参数化显式游标 参数化游标定义语法格式 CURSOR cursor_name(parameter1 datatype[,parameter2 datatype…]) IS select_statement 打开参数化游标的方法 OPEN cursor_name(parameter1 [,parameter2…]) 第一百零一页,共一百六十三页。 * 注意: 定义参数化游标时,只能指定参数的类型,而不能指定参数的长度、精度、刻度; 打开带参数的游标时,实参的个数和数据类型等必须与游标定义时形参个数和数据类型等相匹配。 第一百零二页,共一百六十三页。 * DECLARE CURSOR c_emp(p_deptno emp.deptno%TYPE)IS SELECT * FROM emp WHERE deptno=p_deptno; v_emp c_emp%ROWTYPE; BEGIN OPEN c_emp(10); LOOP FETCH c_emp INTO v_emp; EXIT WHEN c_emp%NOTFOUND; D

文档评论(0)

1亿VIP精品文档

相关文档