sql >> データベース >  >> RDS >> Oracle

Oracle PL / SQL:表タイプを印刷する方法

    Oracleにはオブジェクトがありますが、それは...異なります。プロパティの値を確認したいのか、実際にタイプを確認したいのか、質問が正確にはわかりません。

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

    次に、そのためのコードを実行します。

    
    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;
    

    もちろん、オブジェクトにメソッドを作成して、情報を少し簡単に返すことができます。

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

    オブジェクトの関数を呼び出すことができるようになり、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. SHA512へ-PythonでMySQLデータベースのパスワードをハッシュする

    2. phpおよびmysql-チェックボックス、ラジオボタン、およびドロップダウンメニューの結果をユーザーからmysqlデータベースに送信し、そこに保存します

    3. 組み合わせに単一行を許可するMysqlの一意の制約

    4. データベースと認証ユーザーからソルトされたパスワードを撤回する方法は?