Oracle Live SQL创建对象类型时编译中止,求问题排查思路
Oracle自定义类型编译错误排查与修复
你的代码存在两个关键问题导致编译失败:
- 使用Oracle保留字作为属性名:
date和time都是Oracle的内置保留关键字,不能直接用作对象类型的属性名称。 - 属性名与类型名冲突:属性
appointmentType和类型名AppointmentType在Oracle默认大小写不敏感的规则下属于同名,会触发编译错误。
修正后的代码如下:
CREATE TYPE AppointmentType AS OBJECT ( appointment# NUMBER, appt_date DATE, appt_time NUMBER, appt_type VARCHAR2(50), levelOfInterest NUMBER, offerMade NUMBER, MEMBER FUNCTION isOfferMade RETURN BOOLEAN ); CREATE TYPE BODY AppointmentType AS MEMBER FUNCTION isOfferMade RETURN BOOLEAN IS BEGIN RETURN offerMade > 0; END isOfferMade; END;
说明:
- 将
date替换为appt_date,time替换为appt_time,避开保留字; - 将
appointmentType替换为appt_type,避免与类型名冲突; - 其余逻辑保持不变,修复后可正常编译执行。
内容的提问来源于stack exchange,提问作者lakwije
相关产品推荐
相关产品推荐

