如何在表中使用打包类型作为列类型?

use*_*068 2 database oracle plsql user-defined-types varray

我目前正在尝试了解如何使用我在包中创建的类型作为我的表中的列类型.

这是我的包裹的代码......

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); 
Run Code Online (Sandbox Code Playgroud)

那我的桌子......

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 );
Run Code Online (Sandbox Code Playgroud)

我收到了错误......

从命令行中的第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 - "无效的数据类型"*原因:
*操作:

任何人都可以协助吗?这将不胜感激.

APC*_*APC 6

我们不能在表定义中使用PL/SQL类型.它必须是SQL类型.

create or replace type code_array IS VARRAY(4) OF VARCHAR2(9); 
Run Code Online (Sandbox Code Playgroud)

然后你可以创建一个表:

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 );
Run Code Online (Sandbox Code Playgroud)