OPEN FOR语句

--专门处理返回多行的动态select语句

--语法:

OPEN cursor_variable  FOR  dynamic_SQL_string
 [USING bind_argument1 , bind_argument2 ,  ...]

--其中,cursor_variable是一种REF CURSOR类型的游标*变量*

--dynamic_SQL_string:是包含多行查询的字符串

 

--示例1:11236测试
declare
 --声明ref cursor类型
 type student_cur_type is ref cursor;
 
 --声明游标变量。此时,游标变量未指向任何查询的结果集
 student_cur student_cur_type;
 
 v_zip  VARCHAR2(5) :='&sv_zip';
 v_first_name  VARCHAR2(25);
 v_last_name  VARCHAR2(25);
begin
 --打开游标变量,让它指向一个动态select的结果集
  open student_cur for 'select first_name,last_name '||
                       ' from student where zip= :zip'
       using v_zip;                  
 
 --游标检索
 loop
   fetch student_cur into v_first_name,v_last_name;
   exit when student_cur%notfound;
   dbms_output.put_line(v_first_name||' '||v_last_name);
 end loop;
 
 --关闭游标
 close student_cur;
end;