record可以作为入参

record类型可以作为参数来使用。

    type rec_type is record
    (
        serv_id number(12),
        product_offer_instance_id number(12),
        msg_id number(30)
    );
    function test_serv(rec rec_type) return number;

--这一段在package定义。使得它对于函数、过程是全局可见。

--这里特别要注意,把它定义为全局的,是因为在定义函数的时候,它必须要可见。

function test_serv(rec rec_type) return number is
    begin
        dbms_output.put_line('serv_id = ' || rec.serv_id);
        dbms_output.put_line('product_offer_instance_id = ' || rec.product_offer_instance_id);
        dbms_output.put_line('msg_id = ' || rec.msg_id);
        return 1;
    end;
   
    --deal_offer_detail_inst
    procedure deal_offer_detail_inst(sysTime varchar2) is
        rec rec_type;
        v_exe varchar2(4000);
        num number;
    begin
        v_exe := 'select serv_id, product_offer_instance_id, msg_id from accrossMonth_detailInst_moni';
        execute immediate v_exe into rec;
        num := test_serv(rec);
        dbms_output.put_line(num);
    end;

--这个便是我的处理函数。

declare
begin
    accross_month_deal_pkg_zhou.deal_offer_detail_inst('aa_bb');
end;
/

--这是我的调用。

serv_id = 9729943396
product_offer_instance_id = 9729941750
msg_id = 10100798110200157985
1

--这是结果。

 

record类型既然可以作为入参的话,那么同样的,object也是一样可以作为入参的。

于此同时,record可以作为入参,也是可以作为返回类型的。具体的代码已测试验证。

这样的话,oracle的编程就异常灵活了,结合exception的运用,可以设计多种代码格式、或者可复用的代码结构,包括重载。

我一般一个代码一个风格。用自己喜欢的,简单易上手的,逻辑可以简化的风格。

 

由于这里涉及的包很少。反而我自己多尝试了包的设计和应用。所以设计一个良好的包接口,是以后要慢慢体会的了。

同时也要跟C++一样,或者是也要考虑复用的快速构建。要封装一些良好的工具包,然后锻炼包的运用能力。

这就是要去了解其他人写的包,以及对包里工具对象的理解了。

 

以后还有要学习的,编程方面的方向,应该是:包、含嵌套表、对象表的设计和应用、纯度控制。

包:主要是了解别人的工具,增加自己的理解。

对象表:这里涉及到嵌套表、记录表、索引表、对象表、数组表,这几个主要是应用在pl过程中。

                但是当这些变量融入到表中,以对象的观点来操作表的话,这就是与众不同的地方了。代码会大大简化。

纯度控制:这一块有关权限的控制,我是相当白痴。至今尚未能理解。

游标的嵌套应用:这个东西很强大。教程里有一个代码让我神会了,却始终运用不了。

                                自己对代码结构的构思和理解发挥不到这种水平。有空需要尝试一下。

 

编程方面主要就这些了。oracle更多需要注意的,应该是管理(DBA)。

对管理,没有机会。遇到问题的时候,再尝试吧。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值