对于Oracle的存储过程,抛出异常可以抛向代码或是用表记录。如果你的系统应用有很多节点,像我们40个节点,如果抛错抛到代码里面,错误根本就无法找到,最好是错误用表记录。记录错误的这个功能最好是通用的。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
|
--建立错误日志表 create table PUB_PROC_ERR_LOG ( LOG_ID NUMBER, MODULE_NAME VARCHAR2( 100 ),
PROC_NAME VARCHAR2( 100 ),
ERR_TIME DATE, SQL_CODE VARCHAR2( 50 ),
SQL_ERRM VARCHAR2( 100 ),
ERR_CONTENT VARCHAR2( 500 )
); comment on column PUB_PROC_ERR_LOG.LOG_ID is '主键' ;
comment on column PUB_PROC_ERR_LOG.MODULE_NAME is '模块名称' ;
comment on column PUB_PROC_ERR_LOG.PROC_NAME is '存储过程名称' ;
comment on column PUB_PROC_ERR_LOG.ERR_TIME is '报错时间' ;
comment on column PUB_PROC_ERR_LOG.SQL_CODE is 'SQLCODE' ;
comment on column PUB_PROC_ERR_LOG.SQL_ERRM is 'SQLERRM' ;
comment on column PUB_PROC_ERR_LOG.ERR_CONTENT is '报错的具体行' ;
--表主键的序列 create sequence SEQ_RECORD_PROC_ERR minvalue 1
maxvalue 9999999999999999999999999999
start with 21
increment by 1
cache 20 ;
--通用记录错误存储过程 CREATE OR REPLACE PROCEDURE record_proc_err_log(module_name varchar2, proc_name varchar2, v_SQLCODE varchar2, v_SQLERRM varchar2, v_err_line varchar2) is PRAGMA AUTONOMOUS_TRANSACTION; BEGIN insert into pub_proc_err_log (log_id, module_name, proc_name, err_time, sql_code, sql_errm, err_content) values (seq_record_proc_err.nextval, module_name, proc_name, sysdate, v_SQLCODE, v_SQLERRM, v_err_line); commit; END record_proc_err_log; --进行测试 create or replace procedure test_p1 is begin execute IMMEDIATE 'select from test' ;
exception when others then record_proc_err_log( '模块名' , 'test_p1' ,SQLCODE,SQLERRM,
substr(dbms_utility.format_error_backtrace, 1 , 400 ));
end test_p1; SQL> col proc_name format a8; SQL> col err_time format a10; SQL> col sql_code format a5; SQL> col SQL_ERRM format a22; SQL> col ERR_CONTENT format a42; SQL> select proc_name,err_time,sql_code,SQL_ERRM,ERR_CONTENT from pub_proc_err_log; PROC_NAM ERR_TIME SQL_C SQL_ERRM ERR_CONTENT -------- ---------- ----- ---------------------- ------------------------------------------ test_p1 08 - 12 月- 14 - 936 ORA- 00936 : 缺失表达式 ORA- 06512 : 在 "LCAM_TEST.TEST_P1" , line 3
|
相关推荐
本包用于记录存储过程里面的日志,将日志信息写入日志表(mylog)。可以记录日志时间、过程名称、过程里面...如果在异常处理部分记录日志,还可以记录异常代码、异常原因、异常产生的行数。 本人使用开发环境为oracle10g
oracle 存储过程的基本语法 1.基本结构 CREATE OR REPLACE PROCEDURE 存储过程名字 ( 参数1 IN NUMBER, 参数2 IN NUMBER ) IS 变量1 INTEGER :=0; 变量2 DATE; BEGIN END 存储过程名字 2.SELECT INTO ...
BEGIN END 存储过程名字 2.SELECT INTO STATEMENT 将select查询的结果存入到变量中,可以同时将多个列存储多个变量中,必须有一条 记录,否则抛出异常(如果没有记录抛出NO_DATA_FOUND) 例子: BEGIN SELECT col1,...
将select查询的结果存入到变量中,可以同时将多个列存储多个变量中,必须有一条记录,否则抛出异常(如果没有记录抛出NO_DATA_FOUND) 例子: BEGIN SELECT col1,col2 into 变量1,变量2 FROM typestruct where xxx;...
在存储过程中,select某一字段时,后面必须紧跟into,如果select整个记录,利用游标的话就另当别论了;在利用select...into...语法时,必须先确保数据库中有该条记录,否则会报出"no data found"异常;在存储过程中,...
介绍了oracle存储过程中常见的sql写法,游标(隐式,显式),触发器, CASE ... WHEN ... THEN ...ELSE ... END,IF... THEN ... ELSIF ...THEN...ELSE...END IF,记录类型变量定义和使用 ,%type定义变量,%rowtype定义变量...
Oracle 存储过程.............................................................................................................................. 1 Oracle 存储过程基础知识....................................
包含oracle存储过程的增、删、查、改 %type、%rowtype的使用 自定义函数 PL/SQL块
oracle知识点笔记,语法,触发器,存储过程,存储函数,流程控制,游标,异常处理,记录类型,视图,控制用户权限,高级子查询,set运算符,基本的sql_Select语句等等
1.基本结构 CREATE OR REPLACE PROCEDURE 存储过程名字 ( 参数1 IN NUMBER, 参数2 IN NUMBER ) IS 变量1 INTEGER :=0; 变量2 DATE; ...END 存储过程名字 ... 记录,否则抛出异常(如果没有记录抛出NO_DATA_FOUND)
BEGIN END 存储过程名字 2.select INTO STATEMENT 将select查询的结果存入到变量中,可以同时将多个列存储多个变量中,必须有一条记录,否则抛出异常(如果没有记录抛出NO_DATA_FOUND) 例子: BEGIN select col1,col...
用存储过程创建数据表:创建时注意必须添加authid current_user,如果创建的表已存在,存储过程继续执行,但如不不加此关键语句,存储过程将出现异常,这个语句相当于赋权限。例1创建语句如下: 代码如下:create or ...
Dbmover for Mysql to Oracle 是高效的将Mysql导入到Oracle数据库的工具。 使用DBMover可以灵活定义Mysql和Oracle...记录每一条有异常的数据。并提供工具重复执行。 全面优化数据库操作,让大数据量的处理更少等待。
常常这些满足条件的记录如此之多,一方面在同一个页面显示显得异常臃肿而不切实际,另一方面用户通常也不会对他们都感兴趣,他们似乎更关心按一定规则排序出现在某些开始位置的若干记录。这就要求我们对满足条件的...
7 存储过程 11 №1创建过程 11 №2调用过程 12 №3获取过程信息 12 №4删除过程 12 №5查看过程中的错误 13 №6实际应用示例(积分清零) 13 8 函数 14 №1创建函数 14 №2调用函数 15 №3获取函数信息 15 №4删除...
基本的sql语法,触发器,存储过程,存储函数, 流程控制,游标,异常处理,记录类型,视图, 控制用户权限,高级子查询,set运算符, 基本的sql_Select语句 运算符,多表联查,排序,组函数,序列,索引,同义词, ...
3、要求使用sqlplus,pl/sql或developer建立存储过程,触发器和程序包等代码,其中要求用到游标,异常,各种语句等对表中数据进行处理; 4、使用自己熟悉的开发语言,加入界面,连接数据库; 5、报告要有操作截图...
INTERVAL=60 5 存储追踪和告警文件的路径 user_dump_dest 指定记录 Oracle 用户进程产生的追踪和告警信息的文件的 存放路径 background_dump_dest 指定记录 Oracle 后台进程产生的追踪和 告警信息的...
(5)在未使用显式游标的情况下,使用SELECT语句必须保证只有一条记录返回,否则会产生异常情况。 [例3-1] 问题:编写一个过程,求和运算。 SET SERVEROUTPUT ON; DECLARE a number:=1; BEGIN a:=a+5; DBMS_...
8由于REDOLOG破坏导致数据库异常 9由于控制文件被破坏导致数据库无法正常启动 10由于数据文件丢失或破坏导致数据库无法正常启动 11由于空间参数设置不合理导致扩展表空间、索引等失败 12由于时间格式的环境变量设置...