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;
/
あなたは今、それが簡単に芋読みになり、オブジェクトの関数を呼び出すことができます。
DECLARE
mytype MY_TYPE;
BEGIN
mytype := MY_TYPE('AGAIN','0');
DBMS_OUTPUT.PUT_LINE(mytype.toString);
DBMS_OUTPUT.PUT_LINE(mytype.getType);
END;
V_TEMP_TABTYPEのデータ型は? (コードのDECLAREセクションにあります) –
MY_TABTYPEは次のとおりです。TYPE MY_TABTYPEを作成または置換します。 MY_TYPEは次のとおりです。TYPE MY_TYPE IS OBJECT(MyString Varchar(20)、counter Number(9)); –