我如何创建一个有两个长列的表?

时间:2012-07-25 08:59:27

标签: sql oracle sqldatatypes

我正在使用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.

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

使用number代替专栏是个好主意吗?

我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:9)

很长一段时间没有推荐

LONG列;从8i开始,我相信。来自the 11g documentation

  

不要创建包含LONG列的表。使用LOB列(CLOB,NCLOB,   BLOB)相反。 LONG列仅支持向后   兼容性。

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


Oracle的LONG数据类型是'可变长度最多2千兆字节的字符数据'。如果您要存储数字数据,请使用NUMBER

如果您要映射Java数据类型(从您的个人资料中猜测!),this table可能会有用。

答案 1 :(得分:1)

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

以防检查有关数据类型的Oracle 10g documentation。另外check here for other details