【发布时间】:2017-09-11 18:13:54
【问题描述】:
您好,我是 Oracle 新手,编译时遇到一些错误,例如:
1 ORA-06545:PL/SQL:编译错误 - 编译中止 ORA-06550:第 13 行,第 1 列: PLS-00103:遇到符号“CREATE” ORA-06550:第 0 行,第 0 列: PLS-00565:PERSON 必须作为潜在的 REF 目标(对象类型)完成 C:\Users\GV\Documents\School\ex3.sql 6 1
我要做的是创建一个 Person 类,其中包含他的个人数据(姓名、地址、电话号码、电子邮件)和 2 个方法,一个检测电话号码是否只是数字,另一个检测是否电子邮件字符串中有一个@。
create or replace type Person as object (
--variables
name varchar(10),
address varchar(50),
--methods
member function pNum (phone number) return self as result,
member function m (mail varchar) return self as result
) not final;
--body of methods
create or replace
type Persona as
member function pNum (phone number) return self as result as
begin
if( phone is not number ) then
RAISE_APPLICATION_ERROR( -20122,'phone can only have numbers' );
end;
member function m (mail varchar) return self as result as
begin
if( mail contains('@') ) then
RAISE_APPLICATION_ERROR( -20122,'not a email' );
end;
所以我的问题是
为什么我在创建时收到该错误?
和
我的方法正确吗?
::::::::::::::::::[更新]:::::::::::::::::::::::::: :::::::::::::::::::::::::::::
我已经设法修复了所有错误,但现在我需要一个 if 语句来检查电话号码中是否只有数字,而电子邮件中是否有 @ 字符串
更新代码:
---------------------CLASS-----------------------------
create or replace type Person as object (
--variables
name varchar(10),
address varchar(50),
--methods
member function pNum (phone number) return varchar2,
member function ml (mail varchar) return varchar2
) not final;
/
-----------------------BODY----------------------------------
create or replace type BODY Person as
member function pNum (phone number) return varchar2 as
begin
--if statement that detects if var phone is a number goes here
--if( phone is not number ) then
return 'phone can only have numbers';
end pNum;
member function ml (mail varchar) return varchar2 as
begin
--if statement that detects if var mail has a @ character goes here
--if( mail contains('@') ) then
return 'not a email';
end ml;
end;
/
--------------RUN TEST----------------------------------
DECLARE
a Person;
begin
a := Person(1,2);
dbms_output.put_line('Phone: ' || a.pNum(1152795927));
end;
【问题讨论】:
标签: oracle