我需要特定问题的帮助。
我需要编写一些Oracle数据库程序,接下来会这样做:
我该怎么做?
答案 0 :(得分:1)
由于以下所有评论都表示无法将任何数字转换为日期。你需要知道什么是数字格式。下面是添加列并转换所有数字的示例程序,但它基于数据以ddmmyyyy格式存储日期的条件,例如12102014将给出日期2014年10月12日,但如果数字具有其他格式的日期,则将引发异常。
create or replace procedure columns_change(t_name in varchar2) as
col varchar2(30);
begin
for x in (select column_name from all_tab_columns where table_name = t_name and data_type in ('NUMBER'/*add whatever you need*/)) loop
col := x.column_name;
if (length(col)> 29) then --that's to avoid extending name to more than 30 characters
col := substr(col,1,29);
end if;
execute immediate 'alter table ' || t_name || ' add d' || col || ' date';
execute immediate 'update ' || t_name || ' set ' || col || ' = to_date(' || x.column_name || ',''ddmmyyyy'')';
end loop;
end;