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).