<sql>如何更改表</sql>的VARCHAR2的大小

时间:2013-12-20 04:32:44

标签: sql oracle

我用Google搜索了足够的东西,但出于某种原因,我的工作不起作用。

列名称为 CD 。 type是 VARCHAR2(10Byte)

表名为 TB_POT_ECD_CD

我想将列的大小更改为 VARCHAR2(100Byte)

ALTER TABLE TB_POT_ECD_CD MODIFY(CD VARCHAR2(100))

没用。任何人都可以看一下吗?

3 个答案:

答案 0 :(得分:0)

正如您在问题评论中所说,ORA-00942 ALTER TABLE查询ALTER SYSTEM FLUSH SHARED_POOL;。我能想到的解决方案很少:

  • 尝试在查询中指定所有者/架构
  • 您在语句缓存中以某种方式损坏了条目:尝试此查询ALTER TABLE然后再次MODIFY再次{{1}}
  • 检查您的表是否是实际表,而不是,例如,不同模式中表的同义词

答案 1 :(得分:0)

完全可以修改包含数据的列,包括更改其大小;唯一的例外是我们不能使列小于列(1)中存在的最大值。

这是语法......

alter table TB_POT_ECD_CD modify cd varchar2(100 byte)
/

......这里也是SQL fiddle

(1) 11gR2和早期版本都是如此;在旧版本的Oracle中,我们只能收缩空列。感谢@StanMcgeek指出这一点。


  

“我得到ORA-00942。表或视图不存在。”

这是您的SQL的问题。可能你拼错了表,或者你试图从错误的架构运行查询。

答案 2 :(得分:-3)

您可以remove该列,add再次使用新尺寸

ALTER TABLE TB_POT_ECD_CD 
DROP COLUMN CD

ALTER TABLE TB_POT_ECD_CD 
ADD CD VARCHAR2(100)