知识大全 PL/SQL中的几种异常处理方法
Posted 知
篇首语:不怕学问浅,就怕志气短。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 PL/SQL中的几种异常处理方法相关的知识,希望对你有一定的参考价值。
PL/SQL中的几种异常处理方法 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
PL/SQL里 有三种方法可以在处理大批量数据时不会因为一条或几条数据错误而导致异常中止程序 用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 cha138/Article/program/Oracle/201311/16965相关参考
数据库PL/SQL异常处理(组图) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 在设计PL/S
PL/SQL的几个概念区别 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! char和varcha
ASP.NET中处理异常的几种方式 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 程序中使用tr
在PL/SQL程序中对于处理多行记录的事务经常使用光标来实现 一显式光标在PL/SQL程序中定义的光标称作显式光标 显式光标处理需四个PL/SQL步骤: cursor 光标名称&n
PL/SQL最差实践 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 超长的PL/SQL代码 影
PL/SQL程序结构(组图) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 什么是PL/SQL程
从pl/sql查询字段类型为number并且长度大于位的内容显示为科学计数法的计数方法 pl/sql 从pl/sql查询字段类型为number并且长度大于位的内容显示为科学计数法的计数方法后经
PL/SQL中用光标查询多条记录 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! PL/SQL光标
PL/SQL用光标查询多条记录 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! PL/SQL光标为
全面探讨PL/SQL的复合数据类型 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! PL/SQL有