ok then i missed it. where is the overriding taking place? I saw a base constructor.. 
where was the 'override'?
> 
> From: Stefan Jahnke <[EMAIL PROTECTED]>
> Date: 2003/07/15 Tue AM 08:30:30 EDT
> To: Multiple recipients of list ORACLE-L <[EMAIL PROTECTED]>
> Subject: AW: Object Types in PL/SQL
> 
> Hi
> 
> The anonnymous block at the bottom of my email is just a little test driver.
> Basically, I don't use subtyping here. I just override the default
> constructor.
> If I don't implement a constructor at all, I would look like this:
> 
> CREATE OR REPLACE TYPE tVNR AS OBJECT
> (
>  
>   vVNR VARCHAR2(14),
>   
>   MEMBER FUNCTION getVNR 
>   RETURN VARCHAR2
>    
> ) INSTANTIABLE FINAL;
> 
> CREATE OR REPLACE TYPE BODY tVNR AS
> 
>   MEMBER FUNCTION getVNR RETURN VARCHAR2 IS
>   BEGIN
>     RETURN SELF.vVNR;
>   END;
> END;
> 
> And I would get a hidden, system provided default constructor.
> That would allow me to do the following (tested it):
> 
> declare
>   vVNR tVNR;
> begin
>   vVNR := new tVNR('12345678901');
>   dbms_output.put_line(vVNR.getVNR());
> end;
> 
> And I would get the output:
> 
> 12345678901
> 
> Unfortunately, that doesn't give me any control regarding the initialization
> of vVNR.
> Explanation: VNR = "Versichertennummer", which is kind of the Swiss analog
> to the 
> US Social Security ID, only less unique ;).
> 
> We don't use Object Relational features IN the database. Just plain
> relational tables.
> What we would like to use are Object Types to encapsulate certain things
> like the above 
> shown VNR to ensure data integrity during data conversion for PL/SQL
> programs using 
> these types. It's more of a guideline where the developers are constrained
> to use the 
> types for certain stuff.
> 
> Enjoy your day,
> 
> Stefan Jahnke
> Consultant
> BOV Aktiengesellschaft
> Tel.: +49 201/45 13-289
> mailto:[EMAIL PROTECTED]
> http://www.bov.de
> Abonnieren Sie unseren Newsletter: http://www.bov.de/enews
> 
> Kosten senken - strategische IT-Ziele erreichen! BOV Microsoft Day am
> 24.07.03 in Essen. Anmeldung unter http://www.bov.de/microsoft-day oder
> mailto:[EMAIL PROTECTED]
> 
> Wie Sie wissen, koennen ueber das Internet versandte E-Mails leicht unter
> fremden Namen erstellt oder manipuliert werden. Aus diesem Grunde bitten wir
> um Verstaendnis dafuer, dass wir zu Ihrem und unserem Schutz die rechtliche
> Verbindlichkeit der vorstehenden Erklaerungen und Aeusserungen
> ausschliessen.
> 
> As you are probably aware, e-mails sent via the Internet can easily be
> copied or manipulated by third parties. For this reason we would ask for
> your understanding that, for your own protection and ours, we must decline
> all legal responsibility for the validity of the statements and comments
> given above.
> 
> 
> -----Urspr�ngliche Nachricht-----
> Von: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]
> Gesendet: Dienstag, 15. Juli 2003 14:05
> An: Multiple recipients of list ORACLE-L
> Betreff: Re: Object Types in PL/SQL
> 
> 
> 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 <[EMAIL PROTECTED]>
> > Date: 2003/07/15 Tue AM 06:49:25 EDT
> > To: Multiple recipients of list ORACLE-L <[EMAIL PROTECTED]>
> > 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: [EMAIL PROTECTED]
> > 
> > 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: [EMAIL PROTECTED] (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
> > also send the HELP command for other information (like subscribing).
> > 
> > 
> 
> -- 
> Please see the official ORACLE-L FAQ: http://www.orafaq.net
> -- 
> Author: <[EMAIL PROTECTED]
>   INET: [EMAIL PROTECTED]
> 
> 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: [EMAIL PROTECTED] (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
> also send the HELP command for other information (like subscribing).
> 
> 
>  
> -- 
> Please see the official ORACLE-L FAQ: http://www.orafaq.net
> -- 
> Author: Stefan Jahnke
>   INET: [EMAIL PROTECTED]
> 
> 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: [EMAIL PROTECTED] (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
> also send the HELP command for other information (like subscribing).
> 

-- 
Please see the official ORACLE-L FAQ: http://www.orafaq.net
-- 
Author: <[EMAIL PROTECTED]
  INET: [EMAIL PROTECTED]

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: [EMAIL PROTECTED] (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
also send the HELP command for other information (like subscribing).

Reply via email to