sql >> Databasteknik >  >> RDS >> Oracle

Oracle PL/SQL:Hur man skriver ut en tabelltyp

Oracle har objekt men det är ... annorlunda. Är inte riktigt säker med din fråga om du vill se värdena för fastigheterna eller om du faktiskt vill se typen.


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

Kör nu lite kod för 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;

Naturligtvis kan du skapa metoder på objektet för att returnera information åt dig lite enklare.


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 anropa funktionerna på objektet nu gör det lättare att läsa 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. När ska jag använda transaktioner i mina frågor?

  2. Hur skapar man en ny databas efter att ha installerat Oracle Database 11g Express Edition?

  3. Hur man får databasavisering till C++-applikationen

  4. Det gick inte att ladda filen eller sammansättningen Oracle.DataAccess