如何修改对象的属性数据类型

时间:2018-10-11 16:04:16

标签: oracle plsql

说我有这个类型:

create or replace TYPE type1
AS OBJECT
  (order_date     DATE
  ,order_status   VARCHAR2(50)
  ,offer          NUMBER
)

如何将“优惠”的数据类型更改为VARCHAR2(20)

2 个答案:

答案 0 :(得分:1)

使用ALTER TYPE语法只能扩展:

ALTER TYPE type1 MODIFY ATTRIBUTE (offer  VARCHAR2(20));
-- only widening of attribute 'OFFER' constraints is allowed

db<>fiddle demo

您需要重新创建类型:

create or replace TYPE type1 AS OBJECT(
   order_date     DATE
  ,order_status   VARCHAR2(50)
  ,offer          VARCHAR2(20)
);

答案 1 :(得分:0)

您无需为案例重新创建类型 ,只需DROP/ADD带有cascadeinvalidate选项ATTRIBUTE足够

ALTER TYPE type1 DROP ATTRIBUTE offer [cascade|invalidate];
ALTER TYPE type1 ADD ATTRIBUTE offer varchar2(20) [cascade|invalidate];