sql >> Database teknologi >  >> RDS >> Oracle

Oracle PL/SQL:Sådan udskrives en tabeltype

Oracle har objekter, men det er ... anderledes. Ikke helt sikker med dit spørgsmål, om du vil se værdierne af egenskaberne, eller om du rent faktisk vil se typen.


CREATE OR REPLACE TYPE MY_TYPE IS OBJECT ( 
  MyString Varchar(20)
  , counter Number(9) 
);

Kør nu noget kode til det.


DECLARE
    myType  MY_TYPE;
BEGIN
  myType := MY_TYPE('ABC123',0);
  -- To see the values reference the properties
  DBMS_OUTPUT.PUT_LINE(myType.mystring);
  -- To see they TYPE of the OBJECT
  DBMS_OUTPUT.PUT_LINE(SYS.ANYDATA.CONVERTOBJECT(myType).getTypeName());
END;

Selvfølgelig kan du oprette metoder på objektet for at returnere information til dig lidt lettere.


CREATE OR REPLACE TYPE MY_TYPE IS OBJECT ( 
  MyString Varchar(20)
  , counter Number(9)
 , MEMBER FUNCTION getType RETURN VARCHAR2
 , MEMBER FUNCTION toString RETURN VARCHAR2
)
/

CREATE OR REPLACE TYPE BODY MY_TYPE 
AS
  MEMBER FUNCTION getTYPE RETURN VARCHAR2 IS
    BEGIN
      RETURN SYS.ANYDATA.CONVERTOBJECT(SELF).getTypeName();
    END;
  MEMBER FUNCTION toString RETURN VARCHAR2 IS
    BEGIN
      RETURN 'MY_TYPE('||self.mystring||','||self.counter||')';
    END;
END;
/

Du kan kalde funktionerne på objektet nu gør det nemmere at læse imo.


DECLARE
  mytype    MY_TYPE;
BEGIN
  mytype := MY_TYPE('AGAIN','0');
  DBMS_OUTPUT.PUT_LINE(mytype.toString);
  DBMS_OUTPUT.PUT_LINE(mytype.getType);
END;


  1. Hvordan laver jeg en masseindsættelse i mySQL ved hjælp af node.js

  2. php mysql UPDATE-kommandoen opdateres ikke

  3. Send ind HVOR parametre til PostgreSQL View?

  4. aws - ec2 - mysql - forekomst stop, genstart - andre brugeres adgangskoder ændret