2011-12-12 3 views

답변

18

예, 당신의 VARRAY 유형은 글로벌 유형 (일부 PL/SQL 코드를 로컬이 아닌) 것을 제공 할 수 있습니다 내가 같은 문제가

CREATE OR REPLACE TYPE str_tab_type IS VARRAY(10) OF VARCHAR2(200); 

DECLARE 
    l_str_tab str_tab_type; 
    l_count NUMBER; 
BEGIN 
    l_str_tab := str_tab_type(); 
    l_str_tab.extend(2); 
    l_str_tab(1) := 'TABLE'; 
    l_str_tab(2) := 'INDEX'; 

    SELECT COUNT(*) INTO l_count 
    FROM all_objects 
    WHERE object_type IN (SELECT COLUMN_VALUE FROM TABLE(l_str_tab)); 
END; 
/
0

, 는하지만 난 싶지 않아 그것은 로컬 정의 된 전역 TYPE

을 정의하는 (및 허용되지 않는 경우)

TYPE fkarraytype IS VARRAY(10) OF VARCHAR2(10); 
    fkarray fkarraytype; 

컴파일러에 실패

Error: PLS-00642: Lokale Erfassungstypen in SQL-Anweisungen nicht zulässig Text: AND fk.strval IN (SELECT COLUMN_VALUE FROM TABLE(fkarray))