PLSQL游标笔记

oracle游标:
1、显式游标声明:
cursor cur_emp;
	有参数的游标:
	cursor cur_emp(var_job in varchar2:='SALEMAN')
	默认值有两种写法:var_job in varchar2:='SALEMAN'
					 var_job in varchar2 default 'SALEMAN'
	
	打开有参数的游标:
	open cur_emp('SALEMAN');
	读取游标:
	fetch cur_emp into 变量
	关闭游标:
	close cur_emp;
	
2、隐式游标:
	示例程序:
	begin
		update emp
		set sal=sal+100
		where job='SALEMAN';
		if SQL%notfound then
			dbms_output.put_line('没有雇员的工资需要上调');
		else
			dbms_output.put_line('没有雇员的工资需要上调');
		end if;
	end;
	/
	游标的属性:
	%found
	%notfound
	%rowcount    --该属性记录了游标抽取过的记录数
	%isopen
3、参数化游标:
	cursor cur_emp
	is
	select *
	from emp;
4、游标变量:
	游标变量是一种引用类型。如果要使用引用类型,首先要申明该变量,然后相应的存储单元必须被分配。
	type type_cur ref cursor;     --声明变量类型
	my_cur type_cur;              --声明游标为引用类型
	打开游标:
	open <游标变量> for <SELECT语句>;
	
	
	
    declare    
     type cur_type is ref cursor;   
     cur cur_type;   
     rec scott.emp%rowtype;   
     str varchar2(50);   
     letter char:= 'A';   
    begin  
            loop           
             str:= 'select ename from emp where ename like ''%'||letter||'%''';   
             open cur for str;   
             dbms_output.put_line('包含字母'||letter||'的名字:');   
              loop   
             fetch cur into rec.ename;   
             exit when cur%notfound;   
            dbms_output.put_line(rec.ename);   
    end loop;   
      exit when letter='Z';   
      letter:=chr(ascii(letter)+1);   
     end loop;   
    end;  

5、有参数的游标:
	create or replace procedure a
	as
	  cursor b(c_id int)is select * from d where id=c_id;
	  begin
		open b(111);
	  end;
	

	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值