oracle动态游标中的强类型和弱类型

1、简单的来说:强类型的动态游标是指带有return返回语句的,而弱类型的动态游标是指不带return语句的(也即,弱类型的动态游标可以与任何查询语句匹配,但是强类型的动态游标只能与特定的查询语句匹配。)
2、个人理解:强类型的有点像java中使用了泛型一样对其进行了限制,而弱类型的就像object类型。
3、弱类型的动态游标使用示例:
--根据用户的不同输入来打印(custom、salerecord)信息
declare
type ruoleixing is ref cursor;                 --定义一个动态游标类型(弱)
ruoref ruoleixing; --申明游标

e_custom custom%rowtype;
--声明变量接收查询出来的结果
e_salerecord salerecord%rowtype;

receiver varchar2(1) := upper(substr('&input',1,1));--定义变量接收用户的输入(其中的&input主要就要个&,input是随便取就行)

(其中的upper,substr分别表示将接收到的用户输入转换为大写和截取用户输入的第一个字母,注:在接收用户输入的时候如果是字符串信息得用单引号括起来即:'&input'否则会报错!)

begin

--判断用户的输入并进行相应的输出
if (receiver = 'C') then

open ruoref for  --打开游标
select * from custom;
loop --循环提取游标中的数据
fetch ruoref into e_custom;
exit when ruoref%notfound;
dbms_output.put_line(e_custom.name || ' '|| e_custom.levels); --注:别混了oracle中字符串的拼接是使用 concat 或 || ;e_custom.name || ' '|| e_custom.levels中的name、levels均是custom表中的字段名
end loop;
elsif (receiver = 'S') then

open ruoref for
select * from salerecord;

loop
fetch ruoref into e_salerecord;

exit when ruoref%notfound;

dbms_output.put_line(e_salerecord.totalmoney); --e_salerecord.money中的totalmoney是salerecord表中的一个字段名
end loop;

else
dbms_output.put_line('请输入C或S!');
return; --return表示退出此次操作

end if;
close ruoref; --注意要及时的关闭游标

end;
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值