微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

oracle – 使用TYPE属性检索VARRAY元素类型

我想通过类型属性或任何解决方法检索元素类型的varray存储.

例如,我们的类型定义如下

CREATE TYPE "READINGS" AS VARRAY (200) OF NUMBER(21,6);

(读数是varray,类型为数字(21,6))

READINGS是表INTERVALS中的一列. INTERVALS是一个中心表,我们在INTERVALS上有批处理程序,它们执行sql存储过程.在存储过程中,我们将硬编码变量声明映射到READING VArray类型元素类型,即NUMBER(21,6),例如存储过程具有变量声明,如

CONSUMPTION NUMBER(21,6);

每当更改Varray定义或删除varray并以不同的大小和精度重新创建时,ex(而不是数字(21,6))更改为数字(25,9),我们需要在所有批处理存储过程中更改我们的变量声明.
我正在寻找的是制作CONSUMPTION变量声明,请参考VArray的元素类型.我想要这样的东西

CONSUMPTION INTERVALS.READINGS.COLUMN_TYPE%TYPE;

(我想要这样的东西,参考varray存储的元素类型)

解决方法

为什么要首先创建一个带有VARRAY列的表?通常使用外键创建一个单独的READING表更有意义,该外键允许您将行关联回INTERVALS表.然后,您可以轻松地声明READINGS.COLUMN_NAME%TYPE类型的列.

集合在PL / sql中非常有用.我从未见过他们在标准规范化数据建模方法上有所改进的情况.我已经看到多种情况,将集合合并到您的数据模型中最终会使您的数据模型更难以使用,并且您的代码更难编写和维护.

如果您不想修复数据模型,则可以

>声明一个SUBTYPE或NUMBER(21,6)类型的打包变量,用作变量声明的类型.如果更改VARRAY类型的声明,则必须更改此定义.>使用单个属性(NUMBER(21,6))创建对象类型,并根据该对象类型定义VARRAY.然后,您可以在代码中声明对象类型的实例.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐