【问题标题】:What's wrong with adding LOBs to an Oracle table?将 LOB 添加到 Oracle 表有什么问题?
【发布时间】:2010-11-08 15:15:29
【问题描述】:

我正在尝试通过添加一个新的 CLOB 列(在 Oracle 10 上)ALTER 一个表,但它失败了。 给我一个 ORA-01735 错误。问题是我无法通过谷歌搜索找出我的查询有什么特别的问题,所以我想我会在这里问以防万一。

无论如何我的查询是:

 ALTER TABLE "MYSCHEMA"."MYTABLE" ADD "ACOLUMN" CLOB(2048);

并得到以下错误:

SQL Error: ORA-01735: invalid ALTER TABLE option
01735. 00000 -  "invalid ALTER TABLE option"

有什么想法吗?

谢谢。

【问题讨论】:

    标签: oracle blob alter-table clob


    【解决方案1】:

    您不能为 CLOB 指定大小(如果要指定大小,请使用 VARCHAR):

    SQL> alter table t add ("ACOLUMN" CLOB(2048));
    
    alter table t add ("ACOLUMN" CLOB(2048))
    
    ORA-00907: missing right parenthesis
    
    SQL> alter table t add ("ACOLUMN" CLOB);
    
    Table altered
    

    【讨论】:

    • 是的,在尝试 ADD("ACOLUMN" CLOB(2049)) 语法后,我遇到了缺少右括号的错误。我想我可能会改用 VARCHAR,谢谢
    【解决方案2】:
    alter table t add a_column clob;
    alter table t add a_column_with_max_size varchar2(1234); --max 4000
    

    【讨论】:

    • 感谢您提醒我有关 Varchar2 的 4k 限制!差点忘了。
    【解决方案3】:

    如果您不想在该列中包含超过 2048 个字符,请不要使用 CLOB,请使用 VARCHAR2(2048)。 VARCHAR2 适用于最多 4000 个字符;仅当您可能需要更多时才使用 CLOB。

    【讨论】:

    • 我现在正在脑海中讨论这个问题...我需要 CLOB 还是 VARCHAR2...然后它会变成一个 CLOB ......嗯
    • 专栏的目的是什么?如果要保存任意数量的无法编辑的文本,例如一封信的内容或详细说明,则选择 CLOB;如果用户只是在某个地方记录一些关于记录的注释,并且可以合理地期望他们总是将其编辑到不超过 4000 个字符,请使用 VARCHAR2。
    猜你喜欢
    • 2018-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-03
    • 2015-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多