更改 Oracle 中的对象类型定义以添加更多列

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/15873477/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-19 01:33:45  来源:igfitidea点击:

Alter Object Type Definition in Oracle to add more columns

sqloracleplsqloracle10gtype-conversion

提问by Ajo Koshy

I am using a custom type with around 36 different data columns as an array in my PL/SQLprocedure which allows me return data in the form of array, which i modify at my front end as required. As per the requirement, i need to modify the custom type which now requires modification of the existing columns data that i send , i.e, i need to add 2 more column data to the same. Is it possible to modify the existing data type using ALTERor do i need to use Replaceonly for the same? I am using Oracle 10g and am looking for a way to use ALTERonly

我在我的PL/SQL过程中使用具有大约 36 个不同数据列的自定义类型作为数组,它允许我以数组的形式返回数据,我根据需要在前端修改它。根据要求,我需要修改自定义类型,现在需要修改我发送的现有列数据,即,我需要再添加 2 个列数据。是否可以修改现有的数据类型,ALTER或者我Replace只需要使用相同的数据类型?我正在使用 Oracle 10g 并且正在寻找一种ALTER仅使用的方法

The existing definition of my custom data type is :

我的自定义数据类型的现有定义是:

create or replace
Type TYPE_RD_CONTRACT_PRODUCT_PRICE as Object
(
       CONTRACT_PRODUCT_TERM_ID NUMBER,
       SHIP_FROM_ORG_ID         NUMBER,
       SHIP_FROM_ORG_NUMBER     VARCHAR2(64),
       SHIP_FROM_ORG_NAME       VARCHAR2(128),
       SHIP_TO_ORG_ID           NUMBER,
       SHIP_TO_ORG_NUMBER       VARCHAR2(64),
       SHIP_TO_ORG_NAME         VARCHAR2(128),
       PRICE_START_DATE         DATE,
       PRICE_END_DATE           DATE,
       FOB_PRICE                NUMBER(18,4),
       DELIVERED_PRICE          NUMBER(18,4),
       MISC_FEE                 NUMBER(18,4),
       PRICE_BASIS_ID           NUMBER,
       PRICE_BASIS              VARCHAR2(32),
       MISC_FEE_BASIS_ID        NUMBER,
       MISC_FEE_BASIS           VARCHAR2(32),
       FREIGHT_START_DATE       DATE,
       FREIGHT_END_DATE         DATE,
         FREIGHT_FUEL_DESC_ID     NUMBER,
       TARGET_FREIGHT_BRACKET   NUMBER(18,4),
       FUEL_SURCHARGE_TYPE_NAME VARCHAR2(64),
       TRUCKLOAD_QTY            NUMBER(18,4),
       MILEAGE                  NUMBER(18,4),
       FREIGHT_BRACKET_BASIS    VARCHAR2(32),
       TOTAL_BASE_FREIGHT       NUMBER(18,4),
       MISC_FEE_1               NUMBER(18,4),
       MISC_FEE_2               NUMBER(18,4),
       MISC_FEE_3               NUMBER(18,4),
       MISC_FEE_4               NUMBER(18,4),
       MISC_FEE_5               NUMBER(18,4),
       FREIGHT_MANAGEMENT_TYPE_ID NUMBER,
         FREIGHT_MANAGEMENT_TYPE_NAME VARCHAR2(64),
         REDI_DCT_ORG_ID          NUMBER,
       REDI_DCT_ORG_NUMBER      VARCHAR2(64),
       REDI_DCT_ORG_NAME        VARCHAR2(128),
       IS_REDI_DCT             NUMBER,
       FREIGHT_COST_BASIS_ID   NUMBER
);

采纳答案by Chris Saxon

As per the documentation, you can use alter typeto add attributes:

根据文档,您可以使用alter type添加属性:

alter type TYPE_RD_CONTRACT_PRODUCT_PRICE add attribute (new_val integer);

alter type TYPE_RD_CONTRACT_PRODUCT_PRICE add attribute (new_val integer);