Oracle异常[ORA-22908:NULL表值的参考]问题的解析及解决方法

2014-11-24 17:31:32 · 作者: · 浏览: 1

场景如下:


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


操作1:


查询结果如下:



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


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



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


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


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


看下图:



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


完毕!