如何使用打包类型作为 table 中的列类型?
How do you use a packaged type as a column type in a table?
我目前正在尝试了解如何使用我在包中创建的类型作为我 table 中的列类型。
这是我的包裹的代码...
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);
那么对于我的 table...
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 );
我收到错误...
Error starting at line : 3 in command - 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 ) Error report - ORA-00902:
invalid datatype
00902. 00000 - "invalid datatype"
*Cause:
*Action:
有人可以帮忙吗?这将不胜感激。
我们不能在 table 定义中使用 PL/SQL 类型。它必须是 SQL 类型。
create or replace type code_array IS VARRAY(4) OF VARCHAR2(9);
然后你可以创建一个table:
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 );
我目前正在尝试了解如何使用我在包中创建的类型作为我 table 中的列类型。
这是我的包裹的代码...
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);
那么对于我的 table...
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 );
我收到错误...
Error starting at line : 3 in command - 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 ) Error report - ORA-00902: invalid datatype 00902. 00000 - "invalid datatype" *Cause:
*Action:
有人可以帮忙吗?这将不胜感激。
我们不能在 table 定义中使用 PL/SQL 类型。它必须是 SQL 类型。
create or replace type code_array IS VARRAY(4) OF VARCHAR2(9);
然后你可以创建一个table:
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 );