sql >> Database >  >> RDS >> Oracle

Oracle PL/SQL:een tabeltype afdrukken

Oracle heeft objecten, maar het is... anders. Weet niet precies of je de waarden van de eigenschappen wilt zien of dat je het type daadwerkelijk wilt zien.


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

Voer er nu wat code voor uit.


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;

Natuurlijk kunt u methoden op het object maken om informatie voor u wat gemakkelijker terug te sturen.


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;
/

U kunt de functies op het object nu oproepen, waardoor het gemakkelijker te lezen is 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. Meerdere tabellen komen samen in SQL voor dit scenario

  2. Oracle Forms and Reports 11g versie 2 installeren

  3. MySQL:LAST_INSERT_ID() retourneert 0

  4. Hoe u alle tabellen kunt ophalen met een primaire sleutelbeperking die is gemaakt in de SQL Server-database - SQL Server / TSQL-zelfstudie 57