2009-07-29 9 views
4

디버그 목적으로 table type을 인쇄하려고하는데 어떻게해야할지 모르겠다. 오류가 발생Oracle PL/SQL : 테이블 형식을 인쇄하는 방법

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; 
+0

V_TEMP_TABTYPE의 데이터 유형은 무엇입니까? (코드의 DECLARE 섹션에 있음) –

+0

MY_TABTYPE 다음과 같습니다. TYPE MY_TABTYPE을 작성 또는 바꾸기 AS TABLE OF MY_TYPE; MY_TYPE은 다음과 같습니다. 만들기 또는 바꾸기 TYPE MY_TYPE IS OBJECT (MyString Varchar (20), counter number (9)); –

답변

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

오라클은이 개체 만입니다. 속성의 값을보고 싶거나 실제로 형식을보고 싶은지 여부와 관련하여 정확하게 질문하지는 마십시오.


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; 
관련 문제