--取出表中的数据类型为'VARCHAR2'或'NVARCHAR2'的列 select COLUMN_NAME,DATA_TYPE from all_tab_columns where owner ='DATAREP' and table_name = 'DIM_DISC' and data_type in ('VARCHAR2','NVARCHAR2')
select v.DATA_TYPE,v.DATA_LENGTH,v.* from user_tab_columns v;
select * from all_tables ; 你可以先看看这两个试图的结构,然后写个匿名块来循环执行。 类似的写法: declare
sqlstr varchar2(2000);
begin for c in (select t.COLUMN_NAME, t.DATA_TYPE,t.TABLE_NAME from user_tab_columns t where t.TABLE_NAME=upper('tableA')) loop sqlstr:='update tableA set '||c.column_name||' =''999999'' where '||c.column_name||' is null';
因为时间类型,或是CHAR类型是需要进行和其他的表关联的,就不能随便给它补位了。不然就关联不上了
select COLUMN_NAME,DATA_TYPE
from all_tab_columns where owner ='DATAREP' and table_name = 'DIM_DISC'
and data_type in ('VARCHAR2','NVARCHAR2')
select * from all_tables ; 你可以先看看这两个试图的结构,然后写个匿名块来循环执行。 类似的写法:
declare
sqlstr varchar2(2000);
begin
for c in (select t.COLUMN_NAME, t.DATA_TYPE,t.TABLE_NAME from user_tab_columns t where t.TABLE_NAME=upper('tableA')) loop sqlstr:='update tableA set '||c.column_name||' =''999999'' where '||c.column_name||' is null';
execute immediate sqlstr;
end loop; end;
还不如 update M_REASON set REASON_DESC ='wwwwwwwwwwwwwwwwwwwwwwwwwwwww'; 直接更新呢
呵呵 请问ORACLE里面是否有补位的函数呢, 直接写的, 在原数据上直接加入,假如不足的时候用W代替。