2013-04-08 2 views
0

Я использую пользовательский тип с около 36 различных столбцов данных в виде массива в моей PL/SQL процедуры, которая позволяет мне возвращать данные в виде массива, который я модифицирую на своем переднем конце по мере необходимости. В соответствии с требованием, мне нужно изменить настраиваемый тип, который теперь требует изменения существующих данных столбцов, которые я отправляю, то есть мне нужно добавить еще 2 колонки данных к тому же. Возможно ли изменить существующий тип данных с помощью ALTER или мне нужно использовать Replace только для того же? Я использую Oracle 10g, и я ищу способ использовать ALTER толькоAlter Тип объекта Определение в Oracle, чтобы добавить дополнительные столбцы

Существующее определение моего пользовательского типа данных является:

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 
); 

ответ

1

Согласно documentation, вы можете использовать alter type для добавления атрибутов:

alter type TYPE_RD_CONTRACT_PRODUCT_PRICE add attribute (new_val integer);

+0

может несколько атрибутов быть добавлены в том же заявлении? –

+1

@AjoKoshy да. см. http://sqlfiddle.com/#!4/fa444/1 – DazzaL

+0

@ DazzaL благодарит много –

Смежные вопросы