我目前正在尝试了解如何使用在包中创建的类型I作为我的表中的列类型。
这是我的包裹的代码......
create or replace PACKAGE MY_TYPES
IS
--Associative Array Types
TYPE permutation_array IS TABLE OF VARCHAR2(300) INDEX BY PLS_INTEGER;
--VARRAY Types
TYPE code_array IS VARRAY(4) OF VARCHAR2(9);
然后是我的桌子......
CREATE TABLE mastermind.match_table (match_id NUMBER(4), code_breaker_id NUMBER(4) ,
code_breaker_name VARCHAR2(200),
code_master_id NUMBER(4),
code_master_name VARCHAR2(200),
winner_id NUMBER(4),
game_code MY_TYPES.code_array );
我收到了错误......
从命令行中的第3行开始出错 - CREATE TABLE mastermind.match_table(match_id NUMBER(4),code_breaker_id NUMBER(4) ,code_breaker_name VARCHAR2(200),code_master_id NUMBER(4), code_master_name VARCHAR2(200),winner_id NUMBER(4),game_code MASTERMIND_COLLECTION_TYPES.code_array)错误报告 - ORA-00902: 数据类型无效 00902. 00000 - "无效的数据类型" *原因:
*操作:
有人可以协助吗?这将不胜感激。
答案 0 :(得分:6)
我们不能在表定义中使用PL / SQL类型。它必须是SQL类型。
create or replace type code_array IS VARRAY(4) OF VARCHAR2(9);
然后你可以创建一个表:
CREATE TABLE mastermind.match_table (match_id NUMBER(4),
code_breaker_id NUMBER(4) ,
code_breaker_name VARCHAR2(200),
code_master_id NUMBER(4),
code_master_name VARCHAR2(200),
winner_id NUMBER(4),
game_code code_array );