alter table TT1 modify QTY NUMBER(5,2) 新建一列qty1.set qty1=qty 删qty的数据 再modify 再set qty=qty1 删qty1 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 新建一个NUMBER(5,2)类型的列,然后把数据拷贝到这个列。 对于非空的字段是不能修改字段结构的,如上面提示所示,对于这种情况我通常采用的方法是:1、在tt1表中增加一个字段 QTY_TEMP(5,2);2、使用批量替换方法把QTY的值赋给新加的字段QTY_TEMP;3、删除字段QTY;alter table tt1 drop (QTY);4、把QTY_TEMP名改为QTY。 不能改一个列的名字,你这样还不如新建一个表:create table tt2(stor_id number(),ord_date date.qty number(5,2))as select * from tt1;drop table tt1;rename tt2 to tt1; 呆着也是呆着.下面的过程实现了变更有数据表的数值字段长度.大虾们看看,是这个意思吗?create or replace procedure ChangeN(tabName in varchar2, colName in varchar2, N1 in number, N2 in number) is strsql varchar2(400);begin strsql := 'alter table ' || tabname || ' add ' || colName || '_old' || ' number (' || n1 || ',' || n2 || ')'; execute immediate strsql; strsql := 'update ' || tabName || ' set ' || colName || '_old' || '=' || colName; execute immediate strsql; strsql := 'alter table ' || tabName || ' drop (' || colName || ')'; execute immediate strsql; strsql := 'alter table ' || tabName || ' add ' || colName || ' number(' || N1 || ',' || N2 || ')'; execute immediate strsql; strsql := 'update ' || tabName || ' set ' || colName || '=' || colName || '_old'; execute immediate strsql; strsql := 'alter table ' || tabName || ' drop (' || colName || '_old' || ')'; execute immediate strsql;end ChangeN; create table tmp as select qty,rowid no from tt1;update tt1 set qty=null;alter table tt1 modify qty NUMBER(5,2);update tt1 set qty=(select qty from tmp where tmp.no=tt1.rowid);drop table tmp; 关于数据的统计问题,求连接条件 急求 oeacle 数据库 orcale 中的数据类型中 varchar2 和varchar 有什么区别??? sqlldr导入null的问题 ORACLE 9i能否实现热冗余? 建表问题 怎样在cmd下启动oracle数据库 有問題(在線等)??? 小弟是ORACLE的初学者,在ORACLE中怎样做几个表的接连删除,如果在delphi中又如何调用?(在线等待) oracle执行存储过程如何返回一组数据集 如何得到一段PL/SQL代码的执行时间? 我是菜鸟,请问各位大哥们怎样在SQL PLUS 中显示一个表的结构!
create table tt2(stor_id number(),ord_date date.qty number(5,2))
as select * from tt1;
drop table tt1;
rename tt2 to tt1;
下面的过程实现了变更有数据表的数值字段长度.
大虾们看看,是这个意思吗?create or replace procedure ChangeN(tabName in varchar2,
colName in varchar2,
N1 in number,
N2 in number) is
strsql varchar2(400);
begin
strsql := 'alter table ' || tabname || ' add ' || colName || '_old' ||
' number (' || n1 || ',' || n2 || ')';
execute immediate strsql; strsql := 'update ' || tabName || ' set ' || colName || '_old' || '=' ||
colName;
execute immediate strsql; strsql := 'alter table ' || tabName || ' drop (' || colName || ')';
execute immediate strsql; strsql := 'alter table ' || tabName || ' add ' || colName || ' number(' || N1 || ',' || N2 || ')';
execute immediate strsql; strsql := 'update ' || tabName || ' set ' || colName || '=' || colName ||
'_old';
execute immediate strsql; strsql := 'alter table ' || tabName || ' drop (' || colName || '_old' || ')';
execute immediate strsql;end ChangeN;
update tt1 set qty=null;
alter table tt1 modify qty NUMBER(5,2);
update tt1 set qty=(select qty from tmp where tmp.no=tt1.rowid);
drop table tmp;