获取当前表所有字段

create or replace function getTableAllColumns(tableName varchar2) return varchar2 is
/**function name:getTableAllColumns
   author:yzh
   date:2018-08-09
   description:动态获取表字段,解决当字段值为空时该字段不存储在List<Map<String,Object>>中的问题
********/
v_columns varchar2(4000) :='';
v_columnType varchar2(40):='';
begin
  for x in(
    select u.COLUMN_NAME,u.DATA_TYPE from user_tab_columns u where u.TABLE_NAME = tableName
  )loop
    v_columnType :=x.data_type;
    --判断字段类型是否是DATE类型
    if(v_columnType = 'DATE') then
      v_columns :=v_columns|| 'nvl2('||x.column_name||','||x.column_name||',to_date(''9999-12-31'',''yyyy-mm-dd''))'||' as '|| x.column_name||' ,';
    else
      v_columns :=v_columns|| 'nvl2('||x.column_name||','||x.column_name||',-9999999988)'||' as '|| x.column_name||' ,';
    end if;
  end loop;
  /**去除末尾逗号*/
  return substr(v_columns,0,instr(v_columns,',',-1)-1);
end;
/

猜你喜欢

转载自blog.csdn.net/yzh18373476791/article/details/82290574