Oracle常见错误:ORA-01403

ORA-06512: 在 "MALL.PUB_YANG_LOGON_ORGAN", line 88

ORA-06512: 在 line 1

at com.yangcq.flow.processflow.ProcessflowFunction.execute(ProcessflowFunction.java:102)

at com.opensymphony.workflow.AbstractWorkflow.executeFunction(AbstractWorkflow.java:869)

at com.opensymphony.workflow.AbstractWorkflow.transitionWorkflow(AbstractWorkflow.java:1042)

at com.opensymphony.workflow.AbstractWorkflow.doAction(AbstractWorkflow.java:567)

at com.yangcq.flow.processflow.BaseProcessflow.executeProcessflow(BaseProcessflow.java:65)

at com.yangcq.flow.processflow.BaseProcessflow.executeProcessflow(BaseProcessflow.java:39)

at com.yangcq.web.spring.DefaultFlowExecuteHandler.executeProcessflow(DefaultFlowExecuteHandler.java:58)

at com.yangcq.service.ProcessflowExecuteService.execute(ProcessflowExecuteService.java:164)

at com.yangcq.flow.processflow.function.ProcessflowExecFunction.exec(ProcessflowExecFunction.java:33)

... 48 more

Caused by: com.yangcq.Exception: root cause: SqlMapClient operation; SQL [];

--- The error occurred in config/sqlmap/public.xml.

--- The error occurred while applying a parameter map.

--- Check the public.pwdErrorOperate.

--- Check the statement (update procedure failed).

--- Cause: java.sql.SQLException: ORA-01403: 未找到任何数据

88行的SQL是这样的(为了便于阅读,我把这行代码进行了格式化,多行显示):

SELECT

LCL_LASTFAIL,LCL_FAILTODAY INTO V_LASTDATE, V_FAILCOUNT

FROM

CB_LOGON_CTRL

WHERE

LCL_BRANCHID = IN_BRANCHID AND

LCL_USERID = IN_CSTNO||IN_USERID;

根本原因:SELECT语句查询出来的结果为空,此时把查询出来的空值赋给2个变量,就出现了上面这个错误。ORA-01403: 未找到任何数据,报这个错误

通常都是SELECT INTO 语句查询结果为空的原因。这个报错是我们在使用PL/SQL进行调试时,经常遇到的一个问题。

解决方案:查看一下是不是数据的问题,导致查询结果为空。

如果我们使用Oracle的异常处理机制来捕获这个异常的话,控制台就不会打印错误信息了。

Oracle异常处理机制

为了开发和维护的方便,Oracle定义了常见的异常,主要有以下几个:

1,DUP_VAL_ON_INDEX        异常码 ORA-00001        试图向唯一索引列插入重复值

2,INVALID_CURSOR        异常码 ORA-01001        试图进行非法游标操作

3,INVALID_NUMBER        异常码 ORA-01722        试图将字符串转化成数字

4,NO_DATA_FOUND        异常码 ORA-01403        SELECT INTO 语句中没有任何返回结果

5,TOO_MANY_ROWS        异常码 ORA-01422        SELECT INTO 语句中返回结果

6,ZERO_DIVIDE        异常码 ORA-01476        试图用0作为除数

7,CURSOR_ALREADY_OPEN        异常码 ORA-06511        试图打开一个已经打开的游标

PL/SQL中用EXCEPTION关键字来作为异常的开始标志。一旦一个存储过程发生异常,就会执行异常语句之后的SQL。

扩展阅读:Oracle中的ROWNUM关键字

在查询的结果集中,ROWNUM关键字为结果集中的每一行标识一个行号,第一行返回1,第二行返回2...,以此类推。通过ROWNUM关键字,我们可以控制查询的记录数。如下:

SELECT * FROM ENT_ROLE WHERE ROWNUM < 10;  --查询ENT_ROLE中的前9条记录

ROWNUM与ROWID的区别:ROWID是插入记录时生成的,标识的是行的物理地址;ROWNUM是查询数据时生成的,标识的是查询结果中行的顺序。

关于ROWNUM还有一点需要说明的就是,下面的写法,不返回任何查询结果:

SELECT * FROM ENT_ROLE WHERE ROWNUM > 10;

SELECT * FROM ENT_ROLE WHERE ROWNUM >= 10;

那么Oracle如何实现分页呢?

--Oracle分页查询

SELECT

*

FROM

(

SELECT

ROWNUM R,YANGCQ_ID,YANGCQ_BRANCHID

FROM

YANGCQ_USER

WHERE

ROWNUM <= 10

)

WHERE

R > 5;

流程解析:第一步内部查询得到ROWNUM ,并且起个别名R;然后外部查询使用的R列,其实是内层查询的一个列,而不是行的标号了。

同样的,也可以采用类似的方法:

SELECT

*

FROM

(

SELECT

ROWNUM R,YANGCQ_ID,YANGCQ_BRANCHID

FROM

YANGCQ_USER

)

WHERE

R > 5 AND

R <= 10;

oracle触发器ora01403,Oracle常见错误:ORA-01403 的根本原因和解决方案相关推荐

  1. oracle导入java包时出错,Oracle导入导出的常见错误

    做数据的导入导出操作,最常用的就是imp/exp和impdp/expdp,经常会碰见各种错误,之前总结过一些,<解决导入过程中出现的ORA-02289错误>.<生产数据导入测试环境碰 ...

  2. oracle 触发器用法,Oracle触发器用法实例详解

    本文实例讲述了Oracle触发器用法.分享给大家供大家参考,具体如下: 一.触发器简介 触发器的定义就是说某个条件成立的时候,触发器里面所定义的语句就会被自动的执行. 因此触发器不需要人为的去调用,也 ...

  3. oracle安装及使用常见错误

    一.当出现协议适配器错误,protocol adapter error时 解决方法 这个错误一般是因为没有开启相关的oracle服务导致的,只要将数据库的相关服务开启,就会解决. 二.当出现liste ...

  4. oracle触发器初始化,oracle – 触发器无法初始化变量

    我有触发审计,它存储了对任何EMP表行执行的操作. 这个触发器工作正常,除了在某些情况下(很少发生,我无法确定确切的条件)它给了我 Oracle错误:ORA-01400:无法插入NULL(" ...

  5. oracle触发器比较,Oracle使用触发器和mysql中使用触发器的比较

    一.触发器 1.触发器在数据库里以独立的对象存储, 2.触发器不需要调用,它由一个事件来触发运行 3.触发器不能接收参数 --触发器的应用 举个例子:校内网.开心网.facebook,当你发一个日志, ...

  6. oracle触发器函数,oracle 存储过程、函数和触发器用法实例详解

    本文实例讲述了oracle 存储过程.函数和触发器用法.分享给大家供大家参考,具体如下: 一.存储过程和存储函数 指存储在数据库中供所有用户程序调用的子程序叫存储过程.存储函数. 创建存储过程 用CR ...

  7. oracle 触发器定时任务,ORACLE触发器,定时器。

    ORACLE定时器是靠时间去触发JOB,而触发器是靠事件去触发JOB.从安全性上考虑,触发器的安全度要高于定时器.机制也优于定时器. -- ORACLE通过标志表实现存储过程触发.数据执行完毕后更新记 ...

  8. oracle触发器停止,Oracle触发器死锁问题解决

    这两天一直在因为系统初期设计原因导致的一个触发器问题. 问题如下: 有表T,有客户编号.账户编号及地址三个字段(为方便起见以最少字段描述). 一个客户编号下可能存在多个账户编号(3个或4个). 假设客 ...

  9. oracle触发器 条件,oracle触发器的定义和使用

    触发器定义:当特定事件出现的时候,自动执行的代码块.类似于存储过程,但是用户不能直接调用也不能传递参数. 触发器功能: 1. 允许/限制对表的修改 2. 自动生成派生列,比如自增字段 3. 强制数据一 ...

最新文章

  1. Oracle 表空间 创建参数 说明
  2. TVM: Deep Learning模型的优化编译器(强烈推荐, 附踩坑记录)
  3. 【译】Introducing scrcpy
  4. 领域应用 | 智能导购?你只看到了阿里知识图谱冰山一角
  5. leetcode刷题:z字形变换
  6. 强一致性、弱一致性、最终一致性
  7. ubuntu复制文件到另一个文件夹_Excel VBA之FSO-2.2文件夹的复制
  8. win10查询计算机ip和用户名和密码,Win10系统查询计算机IP子网掩码和默认网关设置教程...
  9. VRRP与VLAN综合实验
  10. shell编程 date、md5sum、curl
  11. 大学计算机基础与计算思维习题,大学计算机基础与计算思维客观题及答案.doc...
  12. 试题 基础练习 序列求和
  13. VB编程:UCase转大写,LCase转小写-4_彭世瑜_新浪博客
  14. 致爱丽丝 之MY收藏
  15. ZOC7 for Mac(终端模拟器)
  16. CSDN 空间:“迷你博客”很迷人(2)收藏
  17. 运筹说 第57期 | 整数规划的分支定界法
  18. error LNK2019: 无法解析的外部符号 XXXXXXXXX,该符号在函数XXX中被引用
  19. nodejs批量裁剪图片尺寸大小
  20. 关于高三经典励志文章精选

热门文章

  1. date java 格式化 sss_Java的日期格式化常用方法
  2. STM32之W5500网络通信
  3. 电脑怎么把flac转换为mp3?
  4. 嵌入式学习记录(1)——四足蜘蛛机器人
  5. 如何让游戏手柄joystick的按键映射键盘keyboard按键,方便不支持手柄的pygame游戏可以通过简单设置后用手柄进行操控
  6. 硬盘低级格式化的几种方法
  7. Python爬虫从入门到精通:(43)JS逆向:完美世界RAS逆向_Python涛哥
  8. 网络最强CASE工具 + 经典UML学习电子资下载汇总,软件设计与开发人员必备
  9. Web前端系列技术之Web APIs基础(从基础开始)⑥
  10. java计算机毕业设计springboot+vue园区管理系统