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.然后,您可以在代码中声明对象类型的实例.

相关文章

Java Oracle 结果集是Java语言中处理数据库查询结果的一种方...
Java AES和Oracle AES是现代加密技术中最常使用的两种AES加密...
Java是一种广泛应用的编程语言,具备可靠性、安全性、跨平台...
随着移动互联网的发展,抽奖活动成为了营销活动中不可或缺的...
Java和Oracle都是在计算机领域应用非常广泛的技术,他们经常...
Java 是一门非常流行的编程语言,它可以运行于各种操作系统上...