我正在尝试更改对象关系模型中的类型以向其添加成员函数,但它一直给我错误

问题描述 投票:0回答:2

这个 Emp_t 类型是我想要更改的类型

create type Emp_t as object(
eno number(4),
ename varchar2(15),
slary number(8,2),
dependents Dependtb_t,
edept ref Dept_t
);
/

这是改变Emp_t类型的DDL命令

alter type Emp_t
add member function calChildAllowance(eno number(4)) return float
cascade;

但是它给了我这个错误:

第 1 行出现错误:
ORA-06545: PL/SQL: 编译错误 - 编译已中止
ORA-06550: 第 12 行,第 49 列:
PLS-00103:在期望以下其中一项时遇到符号“(”:
:= 。 ) , @% 默认字符
符号“:=”被替换为“(”以继续。
ORA-06550: 第 0 行,第 0 列:
PLS-00565:EMP_T 必须作为潜在的 REF 目标(对象类型)完成

Image of the error attached here. I am using SQL Command Line for this

我想更改 Emp_t 类型以添加成员函数。

sql oracle oracle11g object-relational-model
2个回答
0
投票

看起来您不需要数字数据类型的精度:

alter type Emp_t
add member function calChildAllowance(eno number) return float
cascade;

0
投票

1.如果类型已存在则删除

2.连接到SQL PROMPT运行命令如下

SQL> CREATE OR REPLACE TYPE "SPLIT_TBL"  AS TABLE OF VARCHAR2(32767);

 2  /

Type created


SQL> CREATE OR REPLACE TYPE "INV_REF_NO" is table of varchar2(50);
  2  /

Type created
  1. 注意 / 是执行上述语句所必需的。

  2. 编译依赖于此对象的包。

© www.soinside.com 2019 - 2024. All rights reserved.