Oracle FAQ Your Portal to the Oracle Knowledge Grid
HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US
 

Home -> Community -> Mailing Lists -> Oracle-L -> Re: Object Types in PL/SQL

Re: Object Types in PL/SQL

From: <rgaffuri_at_cox.net>
Date: Tue, 15 Jul 2003 7:04:36 -0400
Message-Id: <25929.337778@fatcity.com>


if im reading your code right... looks like your overriding in an anonymous block. in most OO languages overriding is done by a child class. i dont see any subclassing here? didnt they add sub-types and 'extends' to 9.2?

btw, are you using object oriented design in your database? How efficient do you find that?
>
> From: Stefan Jahnke <Stefan.Jahnke_at_bov.de>
> Date: 2003/07/15 Tue AM 06:49:25 EDT
> To: Multiple recipients of list ORACLE-L <ORACLE-L_at_fatcity.com>
> Subject: Object Types in PL/SQL
>
> Hi list
>
> I have a problem regardint PL/SQL Object Types. According to the fine
> manual, it should be
> possible to override the default constructor (I'm on 9.2.0.3.0 Win2k). I did
> that, Object Type
> compiles without complaints:
>
> CREATE OR REPLACE TYPE tVNR AS OBJECT
> (
>
> vVNR VARCHAR2(14),
>
> CONSTRUCTOR FUNCTION tVNR(piVNR VARCHAR2)
> RETURN SELF AS RESULT,
>
> MEMBER FUNCTION getVNR
> RETURN VARCHAR2
>
> ) INSTANTIABLE FINAL;
>
> CREATE OR REPLACE TYPE BODY tVNR AS
>
> CONSTRUCTOR FUNCTION tVNR(piVNR VARCHAR2)
> RETURN SELF AS RESULT IS
> BEGIN
> IF (LENGTH(piVNR)=11) THEN
> SELF.vVNR := SUBSTR(piVNR,1,4) || '.' || SUBSTR(piVNR,5,4) || '.' ||
> SUBSTR(piVNR,9,3);
> ELSE
> SELF.vVNR := 'invalid';
> END IF;
> RETURN;
> END;
>
> MEMBER FUNCTION getVNR RETURN VARCHAR2 IS
> BEGIN
> RETURN SELF.vVNR;
> END;
> END;
>
> Now, everytime I want to create an object like this:
>
> declare
> vVNR tVNR;
> begin
> vVNR := new tVNR('12345678901');
> dbms_output.put_line(vVNR.getVNR());
> end;
>
> I get the following error message:
>
> ERROR at line 4:
> ORA-06550: line 4, column 15:
> PLS-00307: too many declarations of 'TVNR' match this call
> ORA-06550: line 4, column 3:
> PL/SQL: Statement ignored
>
> Looks to me like the PL/SQL enginge isn't able to distinguish the default
> constructor from the
> overridden (my) version, since they have the same signature (of course).
>
> Any input ? I couldn't find ANY descenct hints in the fine manual or the
> Feuerstein book :(.
>
> TIA,
> Stefan
>
>
>
> --
> Please see the official ORACLE-L FAQ: http://www.orafaq.net
> --
> Author: Stefan Jahnke
> INET: Stefan.Jahnke_at_bov.de
>
> Fat City Network Services -- 858-538-5051 http://www.fatcity.com
> San Diego, California -- Mailing list and web hosting services
> ---------------------------------------------------------------------
> To REMOVE yourself from this mailing list, send an E-Mail message
> to: ListGuru_at_fatcity.com (note EXACT spelling of 'ListGuru') and in
> the message BODY, include a line containing: UNSUB ORACLE-L
> (or the name of mailing list you want to be removed from). You may
Received on Tue Jul 15 2003 - 06:04:36 CDT

Original text of this message

HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US