知识大全 PL/SQL中的几种异常处理方法的源代码
Posted 知
篇首语:八成熟,十成收;十成熟,二成丢。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 PL/SQL中的几种异常处理方法的源代码相关的知识,希望对你有一定的参考价值。
PL/SQL中的几种异常处理方法的源代码 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
用Fetch into a cursor%TYPE把要处理的数据放到记录集里 当一条数据不符条件时 用标签<<NEXT_RECORD>>和GOTO NEXT_RECORD Function Name : CalculateImportCharge Function Desc : Calculate Import Charge Created by : Author Created Date : FUNCTION CalculateImportCharge ( p_i_job_id IN VARCHAR p_i_as_of_date_id IN VARCHAR ) RETURN NUMBER AS CURSOR cur_ShipBlHeader IS SELECT import_folder_no FROM GMY_SHIP_BL_HEADER WHERE CANCEL_FLG = GMY_GA _PKG BL_CANCEL_FLG_OFF; rec_ShipBlHeader cur_ShipBlHeader%ROWTYPE; BEGIN OPEN cur_ShipBlHeader; FETCH cur_ShipBlHeader INTO rec_ShipBlHeader; WHILE cur_ShipBlHeader%FOUND LOOP x_num_error_code := GMY_GA _PKG CheckValidMasterBlNo ( p_i_job_id p_i_as_of_date_id rec_ShipBlHeader import_folder_no x_vch_message); IF x_num_error_code IN (GMY_GA _PKG gn#NG GMY_GA _PKG INVALID_BL_NO) THEN x_vch_message := p_i_job_id || WARNING: Function CheckValidMasterBlNo @ || Import folder || rec_ShipBlHeader import_folder_no || Invalid BL No ; _LOG PUTLINE (p_i_job_id x_vch_message); GOTO NEXT_RECORD; END IF; x_num_error_code := CheckExistsOfAccDate ( p_i_job_id p_i_as_of_date_id rec_ShipBlHeader import_folder_no); IF x_num_error_code = GMY_GA _PKG gn#NG THEN GOTO NEXT_RECORD; END IF; MIT; <<NEXT_RECORD>> FETCH cur_ShipBlHeader INTO rec_ShipBlHeader; END LOOP; CLOSE cur_ShipBlHeader; RETURN GMY_GA _PKG gn#OK; EXCEPTION WHEN OTHERS THEN x_vch_message := p_i_job_id || ERROR: Function CalculateImportCharge @ || SUBSTR (SQLERRM (SQLCODE) ); _LOG PUTLINE (p_i_job_id x_vch_message); RETURN GMY_GA _PKG gn#NG; END CalculateImportCharge; 当使用the Cursor FOR Loop循环时 在Loop循环里 把会出问题的情况写进一个独立的block块中 这个块包括完整的begin end部分及exception异常处理部分 这样即使一条数据出现异常 也会继续执行下一条 Function Name : GenerateInsCostInfRec Function Desc : Generate records to transmit in INF table Created by : SISS(AP) Created Date : FUNCTION GenerateInsCostInfRec ( p_i_job_id IN VARCHAR p_i_as_of_date_id IN VARCHAR ) RETURN NUMBER AS CURSOR cur_cost IS SELECT cost ROWID costRowId cost import_folder_no cost insur_trans_id FROM GMY_COST_BL cost GMY_MON_MST mst WHERE cost import_folder_no=invheader import_folder_no AND cost billing_amt_num IS NOT NULL AND cost billing_amt_num!= AND cost insur_db_cr!= ; BEGIN FOR rec_cost IN cur_cost LOOP BEGIN x_num_ret_value := GMY_GA _PKG CheckValidMasterBlNo( p_i_job_id p_i_as_of_date_id rec_cost import_folder_no x_vch_error_msg); IF x_num_ret_value = GMY_GA _PKG VALID_BL_NO THEN INSERT INTO GMY_COST_INS_INF( cost_trx_id created_by program_name) VALUES( GMY_COST_INS_INF_S NEXTVAL PRG_NAME PRG_NAME); ELSIF x_num_ret_value = GMY_GA _PKG INVALID_BL_NO THEN x_vch_error_msg := p_i_job_id || Import folder || rec_cost import_folder_no || has repeated BL No with other import folder || Failed in insurance cost transmission ; _LOG PUTLINE(p_i_job_id x_vch_error_msg); END IF; EXCEPTION WHEN OTHERS THEN IF SQL%ROWCOUNT > THEN check for too many rows x_vch_error_msg := p_i_job_id|| || SUBSTR(SQLERRM(SQLCODE) ); _LOG PUTLINE(p_i_job_id x_vch_error_msg); ELSE x_vch_error_msg := p_i_job_id|| || SUBSTR(SQLERRM(SQLCODE) ); _LOG PUTLINE(p_i_job_id x_vch_error_msg); END IF; END; END LOOP; MIT; RETURN GMY_GA _PKG gn#OK; EXCEPTION WHEN OTHERS THEN x_vch_error_msg := p_i_job_id|| ||SUBSTR(SQLERRM(SQLCODE) ); _LOG PUTLINE(p_i_job_id x_vch_error_msg); ROLLBACK; RETURN GMY_GA _PKG gn#NG; END GenerateInsCostInfRec; 当使用the Cursor FOR Loop循环时 在Loop循环里 把会出问题的情况拆分成子函数 分别处理 Function Name : CopyDsToActualDs Function Desc : Copy the records from DS DB to Actual DS DB Created by : Author Created Date : FUNCTION CopyDsToActualDs ( p_i_job_id IN VARCHAR p_i_as_of_date_id IN VARCHAR ) RETURN NUMBER IS CURSOR cur_DsScc IS SELECT * FROM GMY_DS_SCC; BEGIN FOR rec_DsHead IN cur_DsScc LOOP x_num_error_code := InsToActualScc( cha138/Article/program/Oracle/201311/18441相关参考
数据库PL/SQL异常处理(组图) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 在设计PL/S
PL/SQL的几个概念区别 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! char和varcha
PL/SQL最差实践 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 超长的PL/SQL代码 影
ASP.NET中处理异常的几种方式 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 程序中使用tr
PHP入门需要掌握的几种功能代码 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 经典循环例子&l
在PL/SQL程序中对于处理多行记录的事务经常使用光标来实现 一显式光标在PL/SQL程序中定义的光标称作显式光标 显式光标处理需四个PL/SQL步骤: cursor 光标名称&n
SQL数据库实现递归查询的几种代码方法 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! SQL数据
PL/SQL程序结构(组图) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 什么是PL/SQL程
从pl/sql查询字段类型为number并且长度大于位的内容显示为科学计数法的计数方法 pl/sql 从pl/sql查询字段类型为number并且长度大于位的内容显示为科学计数法的计数方法后经
PL/SQL中用光标查询多条记录 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! PL/SQL光标