全面解析Oracle developer的异常处理机制

Oracle数据库hang住现象解析与应急处理指南 数据库hang住是数据库管理中的一种严重故障现象,通常由于资源争用或内部错误导致数据库实例无响应。理解其原理对于数据库管理员(DBA)至关重要,尤其是在高并发或关键业务系统中。通过监控CPU利用率、I/O wait等系统指标,结合Oracle特有的等待事件如'enq: TX - row lock contention',可以快速识别hang住现象。应急处理通常包括会话级清理、系统级清理和服务重启等步骤,以尽快恢复业务。长期解决方案则涉及参数调优、监控体系搭建和防御性设计,如优化事务粒度和增加控制文件副本。本 阅读详情

 

Oracle developer以其快速的数据处理开发而闻名,其异常处理机制也是比较完善,不可小觑。

1、 异常的优点

如果没有异常,在程序中,应当检查每个命令的成功还是失败,如

BEGIN

SELECT ...

-- check for ’no data found’ error

SELECT ...

-- check for ’no data found’ error

SELECT ...

-- check for ’no data found’ error

这种实现的方法缺点在于错误处理没有与正常处理分开,可读性差,使用异常,可以方便处理错误,而且异常处理程序与正常的事务逻辑分开,提高了可读性,如

BEGIN

SELECT ...

SELECT ...

SELECT ...

...

EXCEPTION

WHEN NO_DATA_FOUND THEN -- catches all ’no data found’ errors

2、 异常的分类

有两种类型的异常,一种为内部异常,一种为用户自定义异常,内部异常是执行期间返回到PL/SQL块的ORACLE错误或由PL/SQL代码的某操作引起的错误,如除数为零或内存溢出的情况。用户自定义异常由开发者显示定义,在PL/SQL块中传递信息以控制对于应用的错误处理。

每当PL/SQL违背了ORACLE原则或超越了系统依赖的原则就会隐式的产生内部异常。因为每个ORACLE错误都有一个号码并且在PL/SQL中异常通过名字处理,ORACLE提供了预定义的内部异常。如SELECT INTO 语句不返回行时产生的ORACLE异常NO_DATA_FOUND。对于预定义异常,现将最常用的异常列举如下:

exception oracle error sqlcode value condition

no_data_found ora-01403 +100 select into 语句没有符合条件的记录返回

too_mang_rows ora-01422 -1422 select into 语句符合条件的记录有多条返回

dup_val_on_index ora-00001 -1 对于数据库表中的某一列,该列已经被限制为唯一索引,程序试图存储两个重复的值

value_error ora-06502 -6502 在转换字符类型,截取或长度受限时,会发生该异常,如一个字符分配给一个变量,而该变量声明的长度比该字符短,就会引发该异常

storage_error ora-06500 -6500 内存溢出

zero_divide ora-01476 -1476 除数为零

case_not_found ora-06592 -6530 对于选择case语句,没有与之相匹配的条件,同时,也没有else语句捕获其他的条件

cursor_already_open ora-06511 -6511 程序试图打开一个已经打开的游标

timeout_on_resource ora-00051 -51 系统在等待某一资源,时间超时

如果要处理未命名的内部异常,必须使用OTHERS异常处理器或PRAGMA EXCEPTION_INIT 。PRAGMA由编译器控制,或者是对于编译器的注释。PRAGMA在编译时处理,而不是在运行时处理。EXCEPTION_INIT告诉编译器将异常名与ORACLE错误码结合起来,这样可以通过名字引用任意的内部异常,并且可以通过名字为异常编写一适当的异常处理器。

在子程序中使用EXCEPTION_INIT的语法如下:

PRAGMA EXCEPTION_INIT(exception_name, -Oracle_error_number);

在该语法中,异常名是声明的异常,下例是其用法:

DECLARE

deadlock_detected EXCEPTION;

PRAGMA EXCEPTION_INIT(deadlock_detected, -60);

BEGIN

... -- Some operation that causes an ORA-00060 error

EXCEPTION

WHEN deadlock_detected THEN

-- handle the error

END;

对于用户自定义异常,只能在PL/SQL块中的声明部分声明异常,异常的名字由EXCEPTION关键字引入:

reserved_loaned Exception

产生异常后,控制传给了子程序的异常部分,将异常转向各自异常控制块,必须在代码中使用如下的结构处理错误:

Exception

When exception1 then

Sequence of statements;

When exception2 then

Sequence of statements;

When others then

3、异常的抛出

由三种方式抛出异常

◆1. 通过PL/SQL运行时引擎

◆2. 使用RAISE语句

◆3. 调用RAISE_APPLICATION_ERROR存储过程

当数据库或PL/SQL在运行时发生错误时,一个异常被PL/SQL运行时引擎自动抛出。异常也可以通过RAISE语句抛出

RAISE exception_name;

显式抛出异常是程序员处理声明的异常的习惯用法,但RAISE不限于声明了的异常,它可以抛出任何任何异常。例如,你希望用TIMEOUT_ON_RESOURCE错误检测新的运行时异常处理器,你只需简单的在程序中使用下面的语句:

RAISE TIMEOUT_ON_RESOUCE;

比如下面一个订单输入的例子,若当订单小于库存数量,则抛出异常,并且捕获该异常,处理异常

DECLARE

inventory_too_low EXCEPTION;

---其他声明语句

BEGIN

IF order_rec.qty>inventory_rec.qty THEN

RAISE inventory_too_low;

END IF

EXCEPTION

WHEN inventory_too_low THEN

order_rec.staus:='backordered';

END;

RAISE_APPLICATION_ERROR内建函数用于抛出一个异常并给异常赋予一个错误号以及错误信息。自定义异常的缺省错误号是+1,

 

缺省信息是User_Defined_Exception。RAISE_APPLICATION_ERROR函数能够在pl/sql程序块的执行部分和异常部分调用,显式抛出带特殊错误号的命名异常。 Raise_application_error(error_number,message[,true,false]))

 

错误号的范围是-20,000到-20,999。错误信息是文本字符串,最多为2048字节。TRUE和FALSE表示是添加(TRUE)进错误堆(ERROR STACK)还是覆盖(overwrite)错误堆(FALSE)。缺省情况下是FALSE。

如下代码所示:

IF product_not_found THEN

RAISE_APPLICATION_ERROR(-20123,'Invald product code' TRUE);

END IF;

4、异常的处理

PL/SQL程序块的异常部分包含了程序处理错误的代码,当异常被抛出时,一个异常陷阱就自动发生,程序控制离开执行部分转入异常部分,一旦程序进入异常部分就不能再回到同一块的执行部分。下面是异常部分的一般语法:

EXCEPTION

WHEN exception_name THEN

Code for handing exception_name

[WHEN another_exception THEN

Code for handing another_exception]

[WHEN others THEN

code for handing any other exception.]

用户必须在独立的WHEN子串中为每个异常设计异常处理代码,WHEN OTHERS子串必须放置在最后面作为缺省处理器处理没有显式处理的异常。当异常发生时,控制转到异常部分,ORACLE查找当前异常相应的WHEN..THEN语句,捕捉异常,THEN之后的代码被执行,如果错误陷阱代码只是退出相应的嵌套块,那么程序将继续执行内部块END后面的语句。如果没有找到相应的异常陷阱,那么将执行WHEN OTHERS。在异常部分WHEN 子串没有数量限制。

EXCEPTION

WHEN inventory_too_low THEN

order_rec.staus:='backordered';

replenish_inventory(inventory_nbr=>

inventory_rec.sku,min_amount=>order_rec.qty-inventory_rec.qty);

WHEN discontinued_item THEN

--code for discontinued_item processing

WHEN zero_divide THEN

--code for zero_divide

WHEN OTHERS THEN

--code for any other exception

END;

当异常抛出后,控制无条件转到异常部分,这就意味着控制不能回到异常发生的位置,当异常被处理和解决后,控制返回到上一层执行部分的下一条语句。

BEGIN

DECLARE

bad_credit exception;

BEGIN

RAISE bad_credit;

--发生异常,控制转向;

EXCEPTION

WHEN bad_credit THEN

dbms_output.put_line('bad_credit');

END;

--bad_credit异常处理后,控制转到这里

EXCEPTION

WHEN OTHERS THEN

--控制不会从bad_credit异常转到这里

--因为bad_credit已被处理

END;

当异常发生时,在块的内部没有该异常处理器时,控制将转到或传播到上一层块的异常处理部分。

BEGIN

DECLARE ---内部块开始

bad_credit exception;

BEGIN

RAISE bad_credit;

--发生异常,控制转向;

EXCEPTION

WHEN ZERO_DIVIDE THEN --不能处理bad_credite异常

dbms_output.put_line('divide by zero error');

END --结束内部块

--控制不能到达这里,因为异常没有解决;

--异常部分

EXCEPTION

WHEN OTHERS THEN

--由于bad_credit没有解决,控制将转到这里

END;

5、异常的传播

没有处理的异常将沿检测异常调用程序传播到外面,当异常被处理并解决或到达程序最外层传播停止。在声明部分抛出的异常将控制转到上一层的异常部分。

BEGIN

executable statements

BEGIN

today DATE:='SYADATE'; --ERRROR

BEGIN --内部块开始

dbms_output.put_line('this line will not execute');

EXCEPTION

WHEN OTHERS THEN

--异常不会在这里处理

END;--内部块结束

EXCEPTION

WHEN OTHERS THEN

处理异常

END

执行部分抛出的异常将首先传递到同一块的异常部分,如果在同一块的异常部分没有处理这个异常的处理器,那么异常将会传播到上一层的异常部分中,一直到最外层。

在异常部分抛出的异常将控制转到上一层的异常部分。

另外错误报告函数SQLCODE和SQLERRM在OTHERS处理器中特别有用,因为它们返回ORACLE错误代码和消息。如下例所示:

declare

err_num NUMBER;

err_msg VARCHAR2(100);

BEGIN

...

EXCEPTION

WHEN OTHERS THEN

err_num := SQLCODE;

err_msg := SUBSTR(SQLERRM, 1, 100);

INSERT INTO errors VALUES (err_num, err_msg);

END;

2007-5-7 19:09:02 查看评语»»»

2007-5-7 19:09:43 oracle 异常处理

~~~~有关于异常处理的3个知识点!

1.EXCEPTION_INT编译指示

功能是将某命名异常同某特定Oracle错误关联起来.

主用用来捕捉某特定异常错误,而不是通过OTHERS来处理.

语法:PROGMA EXCEPTION_INIT(excep

tion_name,oracle_error_number)

 

SQL>

SQL> DECLARE

2 expa EXCEPTION;

3 PRAGMA EXCEPTION_INIT(expa,-6502);

4 vn NUMBER(1);

5 BEGIN

6 vn:=24;

7 EXCEPTION

8 WHEN expa THEN

9 dbms_output.put_line('数字或值错误 : 数值精度太高');

10 WHEN OTHERS THEN

11 dbms_output.put_line(SQLCODE);

12 dbms_output.put_line(substr(SQLERRM,1,100));

13 END;

14 /

数字或值错误 : 数值精度太高

PL/SQL procedure successfully completed

SQL>

2.RAISE_APPLICATION_ERROR

功能用来自定义错误消息

语法: RAISE_APPLICATION_ERROR(error_number,error_message,[keep_errors])

error_number:-20 000到-20 999之间的值

error_message:必须少于512个字符

keep_errors:布尔值.为真则新的错误将被加到已存在的错误清单中(如果已存在的话),为假(默认值)则新的错误将代替当前的错误清单.

SQL> BEGIN

2 UPDATE t SET a='TEST' WHERE a='12345';

3 IF SQL%NOTFOUND THEN

4 raise_application_error(-20001,'你傻了?知道没有这样的数据还去更新!');

5 END IF;

6 EXCEPTION

7 WHEN OTHERS THEN

8 dbms_output.put_line(substr(SQLERRM,1,100));

9 END;

10 /

ORA-20001: 你傻了?知道没有这样的数据还去更新!

PL/SQL procedure successfully completed

SQL>

3.异常传播

A可执行部分发生的异常

1)如果当前语句块有该异常的处理程序则执行之,控制权交由外层语句块.

当前语句块有该异常的处理程序:

SQL> DECLARE

2 expa EXCEPTION;

3 expb EXCEPTION;

4 BEGIN

5 BEGIN

6 RAISE expa;

7 EXCEPTION

8 WHEN expa THEN

9 dbms_output.put_line('异常A产生');

10 END;

11 EXCEPTION

12 WHEN expb THEN

13 dbms_output.put_line('异常B产生');

14 END;

15 /

异常A产生

PL/SQL procedure successfully completed

SQL>

2)如果当前语句没有该异常的处理程序则通过外层语句块中产生该异常来传播该异常,然后通过外层异常处理程序按步骤1来处理.若外层没有该异常的处理程序则异常传播到调用环境.

当前语句块没有该异常的处理程序,外层语句块中产生该异常并处理

SQL> DECLARE

2 expa EXCEPTION;

3 expb EXCEPTION;

4 BEGIN

5 BEGIN

6 RAISE expb;

7 EXCEPTION

8 WHEN expa THEN

9 dbms_output.put_line('异常A产生');

10 END;

11 EXCEPTION

12 WHEN expb THEN

13 dbms_output.put_line('异常B产生');

14 END;

15 /

异常B产生

PL/SQL procedure successfully completed

SQL>

当前语句块没有该异常的处理程序,外层语句块中产生该异常且没有该异常处理程序,异常传播到调用环境

SQL> DECLARE

2 expa EXCEPTION;

3 expb EXCEPTION;

4 BEGIN

5 BEGIN

6 RAISE expb;

7 EXCEPTION

8 WHEN expa THEN

9 dbms_output.put_line('异常A产生');

10 END;

11 EXCEPTION

12 WHEN expa THEN

13 dbms_output.put_line('异常A产生');

14 END;

15 /

DECLARE

expa EXCEPTION;

expb EXCEPTION;

BEGIN

BEGIN

RAISE expb;

EXCEPTION

WHEN expa THEN

dbms_output.put_line('异常A产生');

END;

EXCEPTION

WHEN expa THEN

dbms_output.put_line('异常A产生');

END;

ORA-06510: PL/SQL: 无法处理的用户自定义异常事件

ORA-06512: 在line 6

SQL>

B声明部分发生的异常

声明部分某赋值发生异常,该异常被立即传播到外层语句块,之后按"A可执行部分发生的异常"规则来处理

SQL> BEGIN

2 DECLARE

3 vn NUMBER(1):=25;

4 BEGIN

5 NULL;

6 EXCEPTION

7 WHEN OTHERS THEN

8 dbms_output.put_line('异常在内层被处理!');

9 END;

10 EXCEPTION

11 WHEN OTHERS THEN

12 dbms_output.put_line('异常在外层被处理!');

13 END;

14 /

异常在外层被处理!

PL/SQL procedure successfully completed

SQL>

C异常部分发生的异常

异常处理器中也会产生异常,如RAISE或运行错误产生,这里异常立即被传播到外层同"B声明部分发生的异常"

例子1

SQL>

SQL> BEGIN

2 DECLARE

3 expa EXCEPTION;

4 expb EXCEPTION;

5 BEGIN

6 RAISE expa;

7 EXCEPTION

8 WHEN expa THEN

9 RAISE expb;

10 WHEN expb THEN

11 --这里虽然有expb异常处理语句,但是该异常会立即传播到外层

12 dbms_output.put_line('内层捕捉到异常B');

13 END;

14 EXCEPTION

15 WHEN OT

HERS THEN

 

16 dbms_output.put_line('外层捕捉到异常B');

17 END;

18 /

外层捕捉到异常B

PL/SQL procedure successfully completed

SQL>

例子2

SQL> desc t;

Name Type

---- ---------

ID NUMBER(1)


SQL> BEGIN

2 DECLARE

3 expa EXCEPTION;

4 BEGIN

5 RAISE expa;

6 EXCEPTION

7 WHEN expa THEN

8 INSERT INTO t VALUES(12);

9 WHEN OTHERS THEN

10 dbms_output.put_line('内层捕捉到异常');

11 END;

12 EXCEPTION

13 WHEN OTHERS THEN

14 dbms_output.put_line('外层捕捉到异常');

15 END;

16 /

外层捕捉到异常

PL/SQL procedure successfully completed

SQL>

2007-5-7 19:10:25 一、在plsql中,oracle自带的Exceptions如下:

Exception Oracle Error SQLCODE Value

ACCESS_INTO_NULL ORA-06530 -6530

CASE_NOT_FOUND ORA-06592 -6592

COLLECTION_IS_NULL ORA-06531 -6531

CURSOR_ALREADY_OPEN ORA-06511 -6511

DUP_VAL_ON_INDEX ORA-00001 -1

INVALID_CURSOR ORA-01001 -1001

INVALID_NUMBER ORA-01722 -1722

LOGIN_DENIED ORA-01017 -1017

NO_DATA_FOUND ORA-01403 +100

NOT_LOGGED_ON ORA-01012 -1012

PROGRAM_ERROR ORA-06501 -6501

ROWTYPE_MISMATCH ORA-06504 -6504

SELF_IS_NULL ORA-30625 -30625

STORAGE_ERROR ORA-06500 -6500

SUBSCRIPT_BEYOND_COUNT ORA-06533 -6533

SUBSCRIPT_OUTSIDE_LIMIT ORA-06532 -6532

SYS_INVALID_ROWID ORA-01410 -1410

TIMEOUT_ON_RESOURCE ORA-00051 -51

TOO_MANY_ROWS ORA-01422 -1422

VALUE_ERROR ORA-06502 -6502

ZERO_DIVIDE ORA-01476 -1476

2007-5-7 21:45:42 Oracle SQLCODE/SQLERRM

Oracle内置函数SQLCODE和SQLERRM是特别用在OTHERS处理器中,分别用来返回Oracle的错误代码和错误消息。

OTHERS处理器应该是异常处理块中的最后的异常处理器,因为它是用来捕获除了别的异常处理器处理以外的所有的Oracle异常,所以在程序的最外层使用一个OTHERS处理器的话,将可以确保所有的错误都会被检测到。

在一个内在的异常中,SQLCODE返回Oracle错误的序号,而SQLERRM返回的是相应的错误消息,错误消息首先显示的是错误代码。SQLCODE返回的是负数,除非Oracle的错误为“ORA-01403:NO DATA FOUND”(译:ORA-01403:未找到数据),当Oracle错误为“ORA-01403:NO DATA FOUND”时,其对应的SQLCODE为+100。对于用户自定义的异常,SQLCODE返回的是+1,而SQLERRM返回的是User-Defined Exception。

一个Oracle的错误消息最多只能包含512个字节的错误代码。如果没有异常被触发,则SQLCODE返回0,SQLERRM返回“ORA-0000:normal, successful completion”。

 

 

Python批量导出Oracle数据库DDL脚本实战 数据库DDL(数据定义语言)是描述数据库结构的核心元数据,通过Oracle的DBMS_METADATA包可以标准化提取各类对象定义。Python结合cx_Oracle驱动能高效实现批量导出,利用连接池和并行处理技术显著提升性能。该方案适用于数据库迁移、版本控制等场景,通过自动化脚本替代传统GUI工具操作,解决了人工导出效率低、易遗漏的痛点。典型实现包含对象过滤、增量同步等企业级功能,配合python-oracledb最新驱动可实现最优性能。 阅读详情

相关推荐

PLSQL Developer中文版完整工具包

PLSQL Developer是一款专为Oracle数据库设计的集成开发环境(IDE),主要用于PL/SQL代码的编写、调试和数据库对象管理。其核心功能模块包括强大的代码编辑器、可视化调试器、对象浏览器、SQL执行窗口以及报表设计器等,为数据库开发提供了全方位的支持。本章将从PLSQL Developer的基本功能入手,深入解析其各个模块的作用与协同方式,并介绍其在企业级数据库开发中的重要地位。

weixin_35459464的博客 728

oracle序列异常,RAISE_APPLICATION_ERROR--oralce 异常处理篇 监控的存储过程 sequence

平时用来测试的异常处理我们都是通过dbms_output.put_line来输出异常信息,但是在实际的应用中,需要把异常信息返回给调用的客户端。其实 RAISE_APPLICATION_ERROR是将应用程序专有的错误从服务器端转达到客户端应用程序(其他机器上的SQLPLUS或者其他前台开发语言)raise_application_error(异常类型,传递信息)异常类型:number() 值域:...

weixin_42122340的博客 618

PL/SQL Developer数据库备份实战指南

PL/SQL(Procedural Language/Structured Query Language)是Oracle数据库的核心编程语言,专为高效处理数据库逻辑而设计。它不仅支持过程化编程结构,如循环、条件判断和异常处理,还能够与SQL语句无缝集成,广泛应用于存储过程、函数、触发器和包等数据库对象的开发中。在数据库管理中,数据的完整性与可用性至关重要。一旦遭遇硬件故障、人为误操作或恶意攻击,未及时备份的数据将面临永久丢失的风险。因此,建立科学的备份机制是数据库运维不可或缺的一环。

weixin_42510243的博客 1134

RAISE_APPLICATION_ERROR函数

RAISE_APPLICATION_ERROR函数

kelly_yun的博客 2149

PLSQL Developer 11绿色免安装版实战指南

PL/SQL(Procedural Language/SQL)是Oracle数据库的过程化编程语言,扩展了SQL的功能,支持变量定义、流程控制、异常处理和模块化编程。其基本结构为“块结构”,包含声明段(DECLARE)执行段(BEGIN…END)和异常处理段(EXCEPTION)三部分,如下示例:DECLAREBEGINDBMS_OUTPUT.PUT_LINE('高薪员工');END IF;EXCEPTIONDBMS_OUTPUT.PUT_LINE('发生错误');

weixin_42452924的博客 971

PL/SQL Developer 7.0.1 中文版——Oracle数据库管理与开发工具

PL/SQL Developer是一款为Oracle数据库设计的集成开发环境(IDE),由Allround Automations公司开发。它支持Oracle数据库中所有版本的PL/SQL编程语言,并允许开发者高效地管理、开发和调试数据库对象。

weixin_36184718的博客 919

RAISE_APPLICATION_ERROR错误处理

举例 1.阻止小于18岁的用户增加到数据库 employee 表中 CREATE OR REPALCE TRIGGER minimun_age_check BEFORE INSERT ON employee FOR EACH ROW BEGIN      IF ADD_MONTHS( :new.birth_date, 18*12) > SYSDATE      THEN

似水流年 2979

深入理解PL/SQL与Oracle数据库管理

本文还有配套的精品资源,点击获取 简介:Oracle数据库是全球广泛使用的大型关系型数据库管理系统,PL/SQL是Oracle专为数据库操作设计的过程化编程语言,具有丰富的编程能力。文章深入探讨了PL/SQL在Oracle数据库中的应用、PL/SQL Developer工具的使用,以及如何通过编写存储过程、函数、触发器等数据库对象来实现业务逻辑。文章还提供了PL/SQL D...

weixin_36364707的博客 1415

Oracle中的异常

Oracle中的异常

m0_71406734的博客 4903

PL/SQL连接远程Oracle数据库实战指南

在中,可深度定制开发体验::设置字体、缩进、括号匹配高亮:定义缩写替换规则(如输入sfi自动展开为:创建常用代码模板(如异常处理框架):为不同类型对象指定默认打开方式(如Package Specification用Split View)合理利用这些特性,可显著提升编码速度与一致性,尤其适合参与大型项目的团队协作。| 设置类别 | 推荐配置 || 字体 | Consolas 10pt || 缩进 | 4个空格 || 自动补全 | 启用大小写敏感 |

weixin_32535825的博客 1499

低功耗蓝牙技术 > GAP和GATT介绍

GAP和GATT作为蓝牙协议栈中的关键协议,为BLE设备之间的通信提供了标准和框架。GAP主要负责设备的连接、广播和角色定义,而GATT则定义了BLE设备之间的具体通信方式,通过Services和Characteristics实现数据的传输和交换。在蓝牙技术的发展中,GAP和GATT两个协议扮演着关键的角色,为BLE(低功耗蓝牙)设备之间的通信提供了规范和框架。GATT连接是建立在GAP协议之上的,是一种独占连接,一个BLE外设同时只能连接一个中心设备。连接建立后,通信是双向的,不同于GAP的单向通信。

DL_62532的专栏 4029

oracle异常自动保护机制,全面解析Oracle developer的异常处理机制

全面解析Oracle developer的异常处理机制文章作者:网友投稿 发布时间:2008-08-27 14:53:37 来源:网络Oracle developer以其快速的数据处理开发而闻名,其异常处理机制也是比较完善,不可小觑。1、 异常的优点如果没有异常,在程序中,应当检查每个命令的成功还是失败,如BEGINSELECT ...-- check for ’no data found’ er...

weixin_39819283的博客 200

《矩阵论》学习笔记(四):4.2 矩阵的QR分解

《矩阵论》学习笔记(四):4.2 矩阵的QR分解 文章目录《矩阵论》学习笔记(四):4.2 矩阵的QR分解一. Givens矩阵与Givens变换1.1. 概念与理解1.2. Givens矩阵求解方法二. Householder矩阵与Householder变换2.1. 概念与理解2.2. Householder矩阵求解方法2.3. Givens变换与Householder变换的关系三. 矩阵的QR...

shine的博客 3675

解析Oracle developer 异常处理机制

解析Oracle developer 异常处理机制   Oracle developer以其快速的数据处理开发而闻名,其异常处理机制也是比较完善,不可小觑。   1、 异常的优点   如果没有异常,在程序中,应...

cineqi9136的博客 160

别光看Demo了!用UE5 Lyra框架快速搭建你的多人对战游戏原型(含完整配置流程)

本文详细介绍了如何利用UE5 Lyra框架快速搭建多人对战游戏原型,包含完整的配置流程和实战案例。Lyra作为可直接二次开发的游戏模板,内置了GAS技能系统、Enhanced Input输入控制等核心功能,大幅缩短开发周期。通过替换角色模型、调整武器数值和配置新地图规则,开发者可在48小时内完成科幻团队竞技游戏原型的搭建。

weixin_28717411的博客 455

inferCNVpy分析流程学习

inferCNV的用途大家都已经很清楚了,接下来就走一下流程,试一试Python版的inferCNV。使用的数据集为:GSE188711,既往推文可见:Scanpy分析全流程(含harmonypy整合/细胞周期矫正/双细胞检测及去除)(

zfyyzhys的博客 1294

Oracle 表的约束详解:主键 / 外键 / 唯一 / 非空约束的创建与实战

Oracle 表约束详解:主键/外键/唯一/非空约束实战 本文深入解析Oracle数据库中的四种核心约束机制,帮助开发者构建高可靠的数据存储方案: 核心约束类型 主键约束(PRIMARY KEY) - 唯一标识记录,自动创建唯一索引且禁止NULL值 外键约束(FOREIGN KEY) - 强制维护表间引用完整性,建议手动添加索引提升性能 唯一约束(UNIQUE) - 保证列值唯一但允许多个NULL值 非空约束(NOT NULL) - 强制字段必填,是CHECK约束的特殊形式 技术要点 约束创建支持内联(列级

千淘万漉虽辛苦,吹尽狂沙始到金 1万+

百万 Token 压力实测:1M Context 的真实能力边界在哪里?

本文揭示了长上下文模型的性能衰减规律:1M上下文存在"容量曲线"与"质量曲线"的分歧,512K是可靠拐点。通过MRCR测试发现,不同任务类型衰减差异显著——检索任务在512K后性能下降30.6%,而生成任务仅下降5%。研究提出三阶段补偿策略:三明治注入(首尾指令强化)、语义面包屑(位置标记)、引用检查(强制溯源),可将512K-1M区间的可用性提升20%。工程实践表明,中段区域(30-70%位置)是注意力薄弱区,需要特殊处理。最终建议:关键检索任务控制在512K内,关联推理任务可扩展至

liuzhupeng的专栏 337

Oracle - 子查询基础,单行子查询与多行子查询的用法

🎯 摘要 本文深入解析Oracle数据库中的子查询技术,重点区分单行与多行子查询的应用场景及执行机制。通过实测案例展示子查询在SELECT、UPDATE、INSERT等操作中的实际应用,并揭示Oracle优化器对子查询的重写策略(如转换为JOIN或半连接)。文章特别强调: 单行子查询必须返回0或1行,否则触发ORA-01427错误 多行子查询需配合IN/ANY/ALL/EXISTS运算符使用 相关子查询的性能隐患及优化方案 NOT IN运算符遇到NULL值的致命陷阱 子查询与Java集成的实战示例(JDB

千淘万漉虽辛苦,吹尽狂沙始到金 1万+

Raspberry Pi Pico SDK开发-Timer-定时

RP2040 由 Raspberry Pi 设计,具有双核 Arm Cortex-M0+ 处理器和 264KB 内部 RAM,并支持高达 16MB 的片外闪存。 广泛的灵活 I/O 选项包括 I2C、SPI 和独特的可编程 I/O (PIO)。 本实例将演示如何使用Timer的定时功能。

视觉与物联智能 2040

基于simulink构建一个完整的航空航天器姿态控制与导航仿真模型

航空航天器的姿态控制与导航系统是确保飞行器稳定运行和精确执行任务的核心技术。其目标是通过传感器获取飞行器的状态信息,并利用控制器调整飞行器的姿态,使其按照预定轨迹飞行。基于MATLAB/Simulink平台进行航空航天器姿态控制与导航系统的建模与仿真,可以帮助研究者验证算法性能并优化系统的动态响应。本项目旨在构建一个完整的航空航天器姿态控制与导航仿真模型,包括飞行器动力学建模、传感器模块设计、控制器实现以及导航算法仿真,并通过仿真分析其性能。

xiaoheshang_123的博客 272

Oracle存储过程实战:从基础语法到架构设计,提升数据库编程能力

数据库编程是数据处理的核心技能,其核心原理在于将计算逻辑靠近数据源执行,以减少网络开销并提升处理效率。存储过程作为数据库编程的关键技术,通过预编译和服务器端执行,实现了逻辑封装与性能优化,在批量数据处理和复杂业务规则场景中具有显著技术价值。在Oracle数据库环境下,存储过程结合游标、异常处理等机制,能够高效处理数据集并构建健壮的业务逻辑。本文聚焦Oracle存储过程开发,涵盖从基础创建、参数定义到游标使用、异常处理等实战技巧,并探讨模块化设计与性能优化策略,为开发高性能、可维护的数据处理应用提供实用指导。

weixin_33755557的博客 423

SPMI协议学习总结

SPMI(System Power Management Interface)是由MIPI(Mobile Industry Processor Interface)联盟定义的一种硬件接口标准,它主要用于移动设备中,连接SoC(System on Chip)处理器系统的集成电源控制器与一个或多个电源管理IC(PMIC),以实现精确的电源管理

歌颂苦难的行为是无耻的; 1078
上一篇: Oracle数据库自定义异常的使用方法
下一篇: Oracle:pl/sql 异常处理[转]
ORHCLE
博客等级 码龄17年 30粉丝 1原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值