Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Oracle PL/SQL:Jak wydrukować typ tabeli

Oracle ma obiekty, ale jest… inaczej. Nie jestem do końca pewien w swoim pytaniu, czy chcesz zobaczyć wartości właściwości, czy rzeczywiście chcesz zobaczyć typ.


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

Teraz uruchom trochę kodu.


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;

Oczywiście możesz utworzyć metody na obiekcie, aby nieco łatwiej zwracać informacje.


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

Możesz teraz wywoływać funkcje na obiekcie, co ułatwia czytanie 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Łączenie z bazą danych Oracle

  2. Kodowanie zestawu znaków i współczynniki rozmiaru pamięci

  3. WYBIERZ dane Z KURSORA PAKIETU, wydrukuj

  4. Konwertuj lokalną datę i godzinę (ze strefą czasową) na uniksowy znacznik czasu w Oracle

  5. Błędy ORA-4031 z Direct NFS