在Oracle数据库中,如何创建没有长度的varchar2类型的表

问题描述 投票:0回答:2

为了将其用作函数中的返回类型,我需要在数据库级别创建一个类型。 我通过输入命令来做到这一点:

CREATE TYPE empno_tbl 
    IS TABLE OF VARCHAR2(100);

但这迫使我选择一个长度。 我想创建一个没有特定长度的字符串类型表类型。

有办法做到这一点吗?

sql oracle-database oracle12c
2个回答
4
投票

如果您真的想要没有长度,请使用

CLOB

CREATE TYPE empno_tbl IS TABLE OF CLOB;

(有限制,但在 Oracle 19c 中CLOB

数据类型的限制
为 4GB * DB_BLOCK_SIZE
初始化参数,这给出了 8 TB 到 128 TB 的总大小,如果达到该限制,那么你的方法可能有问题。)

VARCHAR2

的最大大小为 4000 字节,因此如果您可以应对该限制,则只需使用:

CREATE TYPE empno_tbl IS TABLE OF VARCHAR2(4000);
    

0
投票
我有以下内容:

TYPE T_STR_table_TYPE IS TABLE OF VARCHAR2(4000) INDEX BY VARCHAR2(4000); k_columns T_STR_table_TYPE := T_STR_table_TYPE();
但是,在 Oracle 第 2 行(其中设置了 k_columns)19.0.0.0.0 可以正常工作,没有任何编译错误,这与 12.2.0.1.0 Oracle 版本不同,其中
获得 PLS-00222 错误

初始化替换为

k_columns T_STR_table_TYPE;

    已编译
原因是什么? 谢谢你

© www.soinside.com 2019 - 2024. All rights reserved.