سؤال

واني اسعى الى طباعة table type لأغراض التصحيح، ولكن لا أعرف كيف. حاولت طريقتين التالية، أي من الذي عمل:

dbms_output.put_line (V_TEMP_TABTYPE(1));
dbms_output.put_line (V_TEMP_TABTYPE);

والخطأ التي تم إنشاؤها: PLS-00306: wrong number or types of arguments in call to

وهكذا، كيف يمكنني طباعة محتويات table type؟ أم أن هناك طريقة مختلفة لعرض محتويات؟

ووtable_type والمراجع type أنها هي ::

create or replace TYPE MY_TYPE IS OBJECT( MyString Varchar(20)
                                        , counter Number(9) );    
create or replace TYPE MY_TABTYPE AS TABLE OF MY_TYPE;
هل كانت مفيدة؟

المحلول

dbms_output.put_line(v_temp_tabtype(i).myString);

نصائح أخرى

وأوراكل لديها أجسام لكنه ... مختلفة. لست متأكدا بالضبط مع سؤالك إذا كنت تريد أن ترى قيم الخصائص أو إذا كنت تريد أن ترى الواقع النوع.


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;
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top