Oracle_Record

--record
--声明方式:基于table,基于Cursor,用户自定义
--基于table
declare
my_record t_mt_ctry%rowtype;
begin
--TODO
end;

--基于Cursor
declare
cursor my_cursor is
select * from t_mt_ctry;
my_record my_cursor%rowtype;
begin
--TODO
end;

--用户自定义
declare
Type my_record is record(
id t_mt_ctry.id%type;
name varchar2(200);
)
my_record my_record;
begin
--TODO
end;

--Record level processing
/*
#1,我们可在把一个记录的内容拷贝到另一个记录,只要这些记录是基于相同的记录
类型或者兼容的%rowtype记录类型即可(这些记录类型具有相同数量的字段,
字段的数据类型相同或者可以隐式的互相转换)

#2,我们可以用赋值操作给记录赋一个NULL值。
#3,我们可以在参数列表中定义记录类型,并传递记录参数。
#4,我们的函数接口可以返回记录类型。


NOTE:
#1,我们不能用 IS NULL语法来判断一个记录的所有字段都是NULL。相反,我们必须
对每个字段使用IS NULL操作符。
#2,我们不能对两个济洛路作比较-比如,我们不能比较记录(它们的字段值)是相等还是
不相等,或者一个记录是比另一个记录大或是小。我们只能比较每一个字段。
*/

declare
my_record t_mt_ctry%rowtype;
my_record2 t_mt_ctry%rowtype;
my_record3 my_record2%type;
begin
select * into my_record from t_mt_ctry where cd='CN';
my_record2 := my_record;
my_record :=null;
 
dbms_output.put_line(my_record.id || '---' || my_record.cd);
dbms_output.put_line(my_record2.id || '---' || my_record2.cd);
dbms_output.put_line(my_record3.id || '---' || my_record3.cd);

/*

output:
---
CB0301BD60B94618990768E23FD513A5---CN
---

*/

end;



--Field level processing
declare
cursor my_cursor is
select * from t_mt_ctry;
my_record my_cursor%rowtype;
begin
open my_cursor;
loop
fetch my_cursor into my_record;
dbms_output.put_line(my_record.id || '---' || my_record.cd);
exit when my_cursor%notfound;
end loop;
close my_cursor;

end;


转载于:https://my.oschina.net/u/617909/blog/363569

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值