Oracle Deref函数:错误的数字或参数类型
发布时间:2021-01-17 00:45:37 所属栏目:站长百科 来源:网络整理
导读:我正在实行在Oracle中建设一个工具要领,如下所示: CREATE OR REPLACE TYPE BODY TheType AS MEMBER FUNCTION getAtt RETURN VARCHAR2 IS BEGIN RETURN DEREF(SELF.Att).Att2; END;END;/ 可是我收到以下错误: PLS-00306: wrong number or types of argument
我正在实行在Oracle中建设一个工具要领,如下所示: CREATE OR REPLACE TYPE BODY TheType AS MEMBER FUNCTION getAtt RETURN VARCHAR2 IS BEGIN RETURN DEREF(SELF.Att).Att2; END; END; / 可是我收到以下错误: PLS-00306: wrong number or types of arguments in call to 'DEREF' 范例TheType也是这样声明的: CREATE OR REPLACE TYPE TheType UNDER SuperType (); / ... ALTER TYPE TheType ADD ATTRIBUTE ( Att REF TheType ) CASCADE; ... ALTER TYPE TheType ADD MEMBER FUNCTION getAtt RETURN VARCHAR2 CASCADE; 和Supertype的界说: CREATE OR REPLACE TYPE SuperType AS OBJECT ( Att2 VARCHAR2(50) ) NOT FINAL NOT INSTANTIABLE; / 我给DEREF函数一个具有正确范例的var,为什么会呈现这个错误? 假如我信赖Oracle doc,它应该事变 感谢. 办理要领将DEREF转换为SQL.譬喻SQL> create or replace type supertype as object ( att2 varchar2(50) ) 2 not final not instantiable; 3 / Type created. SQL> create or replace type thetype under supertype ( 2 att ref thetype,3 member function getatt return varchar2); 4 / Type created. SQL> show errors type thetype No errors. SQL> create or replace type body thetype as 2 member function getatt return varchar2 is 3 v_t thetype; 4 begin 5 select deref(self.att) into v_t from dual; 6 return v_t.att2; 7 end; 8 end; 9 / Type body created. SQL> show errors type body thetype No errors. SQL> create table thetypes of thetype; Table created. SQL> insert into thetypes values ('hi there',null); 1 row created. SQL> set serverout on SQL> declare 2 v_t thetype; 3 begin 4 select thetype(null,ref(a)) into v_t from thetypes a; 5 dbms_output.put_line(v_t.getatt); 6 end; 7 / hi there PL/SQL procedure successfully completed. SQL> (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |