oracle

推荐列表 站点导航

当前位置:首页 > 数据库 > oracle >

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

来源:网络整理  作者:网络  发布时间:2020-12-09 05:50
这篇文章主要介绍了Oracle ORA-22908(NULL表值的参考)异常分析与解决方法,大家可以参考使用...

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

Oracle ORA-22908(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;

查询结果如下:

看下图:

操作1:

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

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

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

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

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

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

场景如下:

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

--插入一个版本号insert into table(select version_list from test where) values(20130403112459);


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

--将 version_list 字段初始化为 list_obj 对象update test set version_list=list_obj() where;

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

相关热词: oracle 方法 解决

本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供用于网络技术学习参考,学习中请遵循相关法律法规!

本文地址: https://www.juheyunku.com/sql/oracle/1700.shtml

Copyright © www.juheyunku.com      关于 | 合作 | 声明 | 联系 | 更新 | 地图 | Tags

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

2020-12-09 编辑:网络

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

Oracle ORA-22908(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;

查询结果如下:

看下图:

操作1:

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

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

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

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

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

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

场景如下:

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

--插入一个版本号insert into table(select version_list from test where) values(20130403112459);


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

--将 version_list 字段初始化为 list_obj 对象update test set version_list=list_obj() where;

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

本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供学习参考!
本文地址为 https://www.juheyunku.com/sql/oracle/1700.shtml

相关文章

风云图片

推荐阅读

返回oracle频道首页