Oracle游标声明

这篇Oracle教程解释了如何在Oracle / PLSQL中声明游标的语法和示例。

游标是在PLSQL代码的声明部分中定义的SELECT语句。下面来看看三种不同的语法来声明游标。

1. 没有参数的游标(最简单)

在没有任何参数的情况下声明游标是最简单的游标。

语法

Oracle / PLSQL中没有参数的游标的语法是:

CURSOR cursor_name
IS
  SELECT_statement;

示例

例如,可以像下面那样定义一个名为c1的游标。

CURSOR c1
IS
  SELECT course_number
  FROM courses_tbl
  WHERE course_name = name_in;

该游标的结果集是所有course_name,其course_namename_in变量匹配。

下面是使用这个游标的函数。

CREATE OR REPLACE Function FindCourse
   ( name_in IN varchar2 )
   RETURN number
IS
   cnumber number;

   CURSOR c1
   IS
     SELECT course_number
     FROM courses_tbl
     WHERE course_name = name_in;

BEGIN

   OPEN c1;
   FETCH c1 INTO cnumber;

   if c1%notfound then
      cnumber := 9999;
   end if;

   CLOSE c1;

RETURN cnumber;

END;

带参数游标

随着来看更加复杂一点的应用,可以用参数声明游标。

语法

Oracle / PLSQL中具有参数的游标的语法是:

CURSOR cursor_name (parameter_list)
IS
  SELECT_statement;

示例

例如,可以定义一个名为c2的游标,如下所示。

CURSOR c2 (subject_id_in IN varchar2)
IS
  SELECT course_number
  FROM courses_tbl
  WHERE subject_id = subject_id_in;

该游标的结果集是所有course_numbers,其subject_id与通过参数传递给游标的subject_id相匹配。

带有return子句的游标

最后,可以用return子句声明一个游标。

语法
Oracle / PLSQL中带有return子句的游标的语法是:

CURSOR cursor_name
RETURN field%ROWTYPE
IS
   SELECT_statement;

示例

例如,可以像下面那样定义一个名为c3的游标。

CURSOR c3
RETURN courses_tbl%ROWTYPE
IS
   SELECT *
   FROM courses_tbl
   WHERE subject = 'Mathematics';

这个游标的结果集是来自course_tbl的科目是数学的所有列。


posted @ 2018-03-23 09:01  YouseiRaws  阅读(1043)  评论(0编辑  收藏  举报