4

我正在使用 Oracle 10 g。

我有一个需要两列Long类型的表:

CREATE TABLE emp
 (
    id1 LONG NULL,
    id2 LONG NULL,
    //
    // Other columns.
);

当我执行这个查询时,它给了我这个错误:

Error report:
SQL Error: ORA-01754: a table may contain only one column of type LONG
01754. 00000 -  "a table may contain only one column of type LONG"
*Cause:    An attempt was made to add a LONG column to a table which already
           had a LONG column. Note that even if the LONG column currently
           in the table has already been marked unused, another LONG column
           may not be added until the unused columns are dropped.
*Action:   Remove the LONG column currently in the table by using the ALTER
           TABLE command.

我在谷歌上搜索,但找不到合适的解决方案。为什么他们不允许两列LONG

使用number而不是列是个好主意吗?

我怎样才能做到这一点?

4

2 回答 2

11

LONG柱子很久不推荐了;从 8i 开始,我相信。来自11g 文档

不要创建具有 LONG 列的表。请改用 LOB 列(CLOB、NCLOB、BLOB)。支持 LONG 列仅是为了向后兼容。

您只被允许LONG在表格中使用一列。我不完全确定,但我认为这是因为LONG数据与其他列一起存储,而且不止一个会使它更难以管理。LOB 的存储方式不同;请参阅此处的表格进行比较。


Oracle 的LONG数据类型是“可变长度高达 2 GB 的字符数据”。如果要存储数字数据,请使用NUMBER.

如果您正在映射 Java 数据类型(从您的配置文件中猜测!),此表可能有用。

于 2012-07-25T09:03:07.613 回答
1

由于 Oracle 8i 建议不要使用 LONG 数据类型,而是使用 CLOB 或 NLOB 数据类型。

以防万一查看有关数据类型的Oracle 10g 文档。另请查看此处了解其他详细信息

于 2012-07-25T09:08:18.907 回答