• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase
您的位置:首页 > 数据库 >oracle > Oracle ORA-22908(NULL表值的参考)异常分析与解决方法

Oracle ORA-22908(NULL表值的参考)异常分析与解决方法

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-11

通过本文主要向大家介绍了oracle is null,oracle not null,oracle decode null,oracle if null,oracle 判断null等相关知识,希望本文的分享对您有所帮助

场景如下:

--创建类型(type)create or replace type list_obj is table of number;--创建表结构create table test( name varchar2(30) primary key check(regexp_like(name,'^([a-z]|[0-9]|_)+$')), id number not null, version_list list_obj) nested table version_list store as version_list;

场景说明:类型 list_obj 相当一个元素为数字的列表。表 test 有三个字段,字段 name 为主键限制只能使用小写字母、数字、下划线组成的字符串;字段 id 是数字,限制为非空;字段 version_list 是类型为 list_obj 的嵌套表。

操作1:

--插入一条记录insert into test(name, id) values('mophee', 1);

查询结果如下:

目前 version_list 为空(注意,是 null),现在我们需要开始维护该字段:往 name='mophee' 的记录插入一个版本号20130403112459。语句如下:

</div>

执行以上 insert 语句就报错了!

原因是什么?version_list 字段目前是 NULL,以上insert语句试图做这个动作:table(NULL),也就是要将NULL对象化成一个表。这事有违常理,ORACLE干不了!

那么怎么解决呢?version_list 字段之所以为NULL,是因为我们根本没对它进行初始化。那么,在insert之前先对其初始化不久能解决问题了吗?

方法一:在往 test 表 insert 的时候使用如下语句

</div>

方法二:在往 version_list 插入版本号之前先对其进行初始化

</div>

看下图:

这是在 pl/sql developer下的查询输出,注意 version_list 列数据单元格的背景色(与上方图片对比一下)已经不是淡黄色(此时字段值为null)!虽然查看 version_list 字段的内部内容依旧是没有一条记录,但是意义上是不一样的——初始化之前是 null,初始化之后才是 list_obj 对象。

 

</div> </div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • Oracle ORA-22908(NULL表值的参考)异常分析与解决方法

相关文章

  • 2017-05-11oracle 数据泵导入导出介绍
  • 2017-05-11Oracle开发之报表函数
  • 2017-05-11浅析常用数据库的自增字段创建方法汇总
  • 2017-05-11Oracle 跨库 查询 复制表数据 分布式查询介绍
  • 2017-05-11oracle使用order by排序null值如何处理
  • 2017-05-11PL/SQL number型数据
  • 2017-05-11[Oracle] RAC 之 - 负载均衡深入解析
  • 2017-05-11[Oracle] 浅析令人抓狂的ORA-01555问题
  • 2017-05-11oracle创建表空间、授权、创建用户、导入dmp文件
  • 2017-05-11Orcale权限、角色查看创建方法

文章分类

  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase

最近更新的内容

    • oracle日期时间型timestamp的深入理解
    • oracle创建数据库和用户的方法
    • oracle 数据库隔离级别学习
    • Oracle数学相关函数小结
    • oracle 性能优化建议小结
    • oracle中添加删除主键的方法
    • Oracle 用户密码有效期的sql语句
    • oracle更新xml节点问题的一些细节
    • Oracle case函数使用介绍
    • Oracle跨数据库查询并插入实现原理及代码

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有