CREATE TYPE object_type IS OBJECT ( col1 NVARCHAR2(100), col2 NUMBER(10) ) / CREATE TYPE object_table_type IS TABLE OF object_type / DECLARE object_table object_table_type; CURSOR cur IS SELECT * FROM TABLE(CAST(object_table AS object_table_type)); wk_rec cur%ROWTYPE; BEGIN object_table := object_table_type( object_type('A',1), object_type('B',2), object_type('C',3), object_type('D',4), object_type('E',5) ); OPEN cur; LOOP FETCH cur INTO wk_rec; EXIT WHEN cur%NOTFOUND; DBMS_OUTPUT.PUT_LINE(wk_rec.col1 || ',' || wk_rec.col2); END LOOP; CLOSE cur; END; /
以下のようなエラーが発生しました。
ORA-12714: 無効な各国語キャラクタ・セットが指定されました
NVARCHAR2型の属性を TO_CHAR しても変わりません。
しかし、SQLでなく、添字で参照した場合はエラーにはなりません。
DECLARE object_table object_table_type; BEGIN object_table := object_table_type( object_type('A',1), object_type('B',2), object_type('C',3), object_type('D',4), object_type('E',5) ); FOR i IN 1..object_table.COUNT LOOP DBMS_OUTPUT.PUT_LINE(object_table(i).col1 || ',' || object_table(i).col2); END LOOP; END; /
うーん...バグですかね。