解决方案 »

  1.   

    如果字段属性not null,不是存不存在not null
    下面就可以了,呵,不然必须要动态语句了.
    updateall_masttable a
    set columns_had=(select count(*) from all_tab_columns
    where table_name=a.table_name and nullable='N' ),
    columns_num=(select count(*) from all_tab_columns
    where table_name=a.table_name );
      

  2.   

    看文字说明和你的代码还是有些出入
    你文字中说:搜索出一个字段NOT NULL  res_columns_had直接加1
    你的代码实现的是:找到一个NOT NULL 字段,然后查询表里是否有数据,有数据再加1
    不知道你实际的需求是和哪个是一致的
    按你文字中说的需求,1楼办法可行,代码还可简化
    updateall_masttable a
    set (columns_had,columns_num)=(
    select NVL(sum(decode(nullable,'N',1)),0),count(*) from all_tab_columns
    where table_name=a.table_name
    );