Mega Code Archive

 
Categories / Oracle PLSQL / Object Oriented Database
 

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>