您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > 创建存储过程,oracle数据可中如何创建存储
创建存储过程过程和函数都是pl/sql的带名块,也被成为子程序。它们被创建时,首先被编译,然后以经过编译的形式存储在数据库中。通常在创建过程时,都要带上orreplace,因为在开发过程的时候删除/重新创建的操作是很常见的,若不带上orreplace,在create过程时,如果一个过程存在同时又没有使用orreplace关键字,那么create语句将返回oracle错误。1)形式参数模式过程的形式参数可以有三种模式:in、out、inout,如果没有为形式参数指定模式,那么它缺省的模式就是in,当形式参数的模式为in,调用该过程时,实际参数的取值被传递给该过程。当形式参数的模式为out,调用该过程时,实际参数的取值被忽略,当过程结束时,形式参数的内容将被赋予实际参数。当形式参数的模式为inout,调用该过程时,实际参数的取值被传递给该过程,当过程结束时,形式参数的内容将被赋予实际参数。2)过程的主体过程的主体是一个拥有声明、执行、和异常处理部分的pl/sql块。声明部分在is或as关键字和begin关键字之间。执行部分(唯一必须的部分)在begin和exception关键字之间。异常处理部分在exception和end关键字之间。3)对形式参数的约束在过程的声明中,限制char和varchar2参数的长度以及限制number参数的精度都是非法的下面过程带了三各参数createorreplaceprocedureclwz_nettj(mfrom_dateinchar,mto_dateinchar,is_successoutnumber)asexistnumber;clientvarchar2(10);displayvarchar2(30);DateIsNullEXCEPTION;unsure_numvarchar2(6);sure_numvarchar2(6);unpunish_numvarchar2(6);punish_numvarchar2(6);cash_numvarchar2(8);/*定义游标clwz_client为本支队所有网点的集合*/cursorclwz_clientisselect*fromvio_clientorderbycode;begin/*判断参数是否为空*/ifmfrom_dateisnullandmto_dateisnullthenraiseDateIsNull;endif;/*判断对应数据是否已统计过,使用表zp_tj(dadui,client,display,unsure,sure,unpunish,punish,cash)来存储查询结果*/selectcount(*)intoexistfromzp_tj;ifexist0thendeletefromzp_tj;endif;/*下面执行统计,首先打开网点游标*/openclwz_client;loopfetchclwz_clientintoclient,display;exitwhenclwz_client%NOTFOUND;selectcount(*)intounsure_numfromvio_tempwherevio_date=mfrom_dateandvio_date=mto_dateandvio_flag=0andveh_xzxq=client;selectcount(*)intosure_numfromvio_tempwherevio_date=mfrom_dateandvio_date=mto_dateandvio_flag0andveh_xzxq=client;selectcount(*)intounpunish_numfromvio_tempwherevio_date=mfrom_dateandvio_date=mto_dateandis_over=0andveh_xzxq=client;selectcount(*)intopunish_numfromvio_tempwherevio_date=mfrom_dateandvio_date=mto_dateandis_over=1andveh_xzxq=client;selectsum(vio_price)intocash_numfromvio_tempwherevio_date=mfrom_dateandvio_date=mto_dateandis_over=1andveh_xzxq=client;insertintozp_tjvalues('',client,display,unsure_num,sure_num,unpunish_num,punish_num,cash_num);endloop;closeclwz_client;commit;is_success:=1;/*例外处理*/EXCEPTIONwhenDateIsNullthen/*参数全为空*/is_success:=-1;ROLLBACK;whenOTHERSthenis_success:=-2;ROLLBACK;end;/
本文标题:创建存储过程,oracle数据可中如何创建存储
链接地址:https://www.777doc.com/doc-2644888 .html