加入收藏 | 设为首页 | 会员中心 | 我要投稿 辽源站长网 (https://www.0437zz.com/)- 云专线、云连接、智能数据、边缘计算、数据安全!
当前位置: 首页 > 站长百科 > 正文

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

发布时间:2021-01-14 16:55:30 所属栏目:站长百科 来源:网络整理
导读:我想通过类型属性或任何解决方法检索元素类型的varray存储. 例如,我们的类型定义如下 CREATE TYPE "READINGS" AS VARRAY (200) OF NUMBER(21,6); (读数是varray,类型为数字(21,6)) READINGS是表INTERVALS中的一列. INTERVALS是一个中心表,我们在INTERVALS上

我想通过类型属性或任何解决方法检索元素类型的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.然后,您可以在代码中声明对象类型的实例.

(编辑:辽源站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读