如何修改列的大小

use*_*121 33 oracle alter-table oracle-sqldeveloper

我在Oracle SQL Developer中创建了表Test_Project2.之后我意识到列proj_name的大小很小,所以我决定使用follwoing语句修改列

ALTER TABLE TEST_PROJECT2 MODIFY proj_name VARCHAR2(300);
Run Code Online (Sandbox Code Playgroud)

但由于某些原因,Oracle SQL Developer用红色强调了分号,我不知道什么是错误以及如何纠正它

Test_Project2:

CREATE TABLE Test_Project2 (
proj_id number(30),
proj_name VARCHAR2 (30),
proj_desc VARCHAR2(300)
);
Run Code Online (Sandbox Code Playgroud)

sst*_*tan 79

无论Oracle SQL Developer在语法高亮显示中可能指出什么错误,实际上alter按照您最初的方式运行语句都可以完美地运行:

ALTER TABLE TEST_PROJECT2 MODIFY proj_name VARCHAR2(300);
Run Code Online (Sandbox Code Playgroud)

如果需要一次更改多个列,则只需添加括号,例如:

ALTER TABLE TEST_PROJECT2 MODIFY (proj_name VARCHAR2(400), proj_desc VARCHAR2(400));
Run Code Online (Sandbox Code Playgroud)

  • 我更喜欢在数字后添加带有varchar2的"CHAR",以避免与"BYTE"的歧义:`ALTER TABLE TEST_PROJECT2 MODIFY proj_name VARCHAR2(300 CHAR);`.在此处查看更多信息:/sf/ask/523429511/ (4认同)

小智 9

这是使用 Toad for Oracle 12.8.0.49 完成的

ALTER TABLE SCHEMA.TABLENAME 
    MODIFY (COLUMNNAME NEWDATATYPE(LENGTH)) ;
Run Code Online (Sandbox Code Playgroud)

例如,

ALTER TABLE PAYROLL.EMPLOYEES 
    MODIFY (JOBTITLE VARCHAR2(12)) ;
Run Code Online (Sandbox Code Playgroud)


小智 7

如果运行它,它将起作用,但是为了使SQL Developer能够识别而不警告可能的错误,可以将其更改为:

ALTER TABLE TEST_PROJECT2 MODIFY (proj_name VARCHAR2(300));
Run Code Online (Sandbox Code Playgroud)