Define ToString method for object type
SQL> SQL> set serveroutput on SQL> SQL> CREATE OR REPLACE TYPE Point AS OBJECT ( 2 x NUMBER, 3 y NUMBER, 4 5 MEMBER FUNCTION ToString RETURN VARCHAR2, 6 PRAGMA RESTRICT_REFERENCES(ToString, RNDS, WNDS, RNPS, WNPS), 7 8 MEMBER FUNCTION Distance(p IN Point DEFAULT Point(0,0)) 9 RETURN NUMBER, 10 PRAGMA RESTRICT_REFERENCES(Distance, RNDS, WNDS, RNPS, WNPS), 11 12 MEMBER FUNCTION Plus(p IN Point) RETURN Point, 13 PRAGMA RESTRICT_REFERENCES(Plus, RNDS, WNDS, RNPS, WNPS), 14 15 MEMBER FUNCTION Times(n IN NUMBER) RETURN Point, 16 PRAGMA RESTRICT_REFERENCES(Times, RNDS, WNDS, RNPS, WNPS) 17 ); 18 / SQL> show errors No errors. SQL> SQL> CREATE OR REPLACE TYPE BODY Point AS 2 MEMBER FUNCTION ToString RETURN VARCHAR2 IS 3 myResult VARCHAR2(20); 4 v_xString VARCHAR2(8) := SUBSTR(TO_CHAR(x), 1, 8); 5 v_yString VARCHAR2(8) := SUBSTR(TO_CHAR(y), 1, 8); 6 BEGIN 7 myResult := '(' || v_xString || ', '; 8 myResult := myResult || v_yString || ')'; 9 RETURN myResult; 10 END ToString; 11 12 MEMBER FUNCTION Distance(p IN Point DEFAULT Point(0,0)) 13 RETURN NUMBER IS 14 BEGIN 15 RETURN SQRT(POWER(x - p.x, 2) + POWER(y - p.y, 2)); 16 END Distance; 17 18 MEMBER FUNCTION Plus(p IN Point) RETURN Point IS 19 myResult Point; 20 BEGIN 21 myResult := Point(x + p.x, y + p.y); 22 RETURN myResult; 23 END Plus; 24 25 MEMBER FUNCTION Times(n IN NUMBER) RETURN Point IS 26 myResult Point; 27 BEGIN 28 myResult := Point(x * n, y * n); 29 RETURN myResult; 30 END Times; 31 END; 32 / Type body created. SQL> show errors No errors. SQL> SQL> SQL> DECLARE 2 v_Point1 Point := Point(0, 0); 3 BEGIN 4 DBMS_OUTPUT.PUT_LINE('Point 1 is ' || v_Point1.toString); 5 END; 6 / Point 1 is (0, 0) PL/SQL procedure successfully completed. SQL>