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;
/
うーん...バグですかね。