أوراكل PL / SQL: كيفية طباعة الجدول نوع
سؤال
واني اسعى الى طباعة 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;
لا تنتمي إلى StackOverflow