Feldtyp ändern?

Hallo zusammen,

kann mir jemand sagen ob es möglich ist in einer ORACLE-DB den Feldtypen eins Attributs von z.B. Number nach Varchar2 zu ändern, wenn schon Datensätze in der Tabelle sind??

Gruß
Micha

hallo micha

den datentyp ändern geht nur, wenn die spalte leer ist. du kannst z.b. sowas machen:

alter table xxx add spalte2 varchar2 (20) ;
update xxx set spalte2 = spalte1 ;
alter table xxx drop column spalte1 ;
alter table xxx add spalte1 varchar2(20) ;
update xxx set spalte1 = spalte2 ;
alter table xxx drop column spalte2 ;

unter oracle 10 geht es etwas einfacher:

alter table xxx add spalte2 varchar2 (20) ;
update xxx set spalte2 = spalte1 ;
alter table xxx drop column spalte1 ;
alter table xxx rename column spalte2 to spalte1 ;

und natürlich auch was eleganteres für oracle vor v10:

alter table xxx add spalte2 varchar2 (20) ;
update xxx set spalte2 = spalte1 ;
update xxx set spalte1 = null ;
alter table xxx mofify spalte1 varchar2(20);
update xxx set spalte1 = spalte2 ;

lg
erwin