转换和更改 Oracle table 列

Converting and altering Oracle table columns

我需要有关特定问题的帮助。

我需要编写一些 Oracle 数据库程序,接下来要做的是:

我该怎么做?

正如下面的所有评论 post 所说,无法将任何数字转换为日期。你需要知道什么是数字格式。下面是添加列和转换所有数字的示例过程,但它基于数字以 ddmmyyyy 格式存储日期的条件,例如 12102014 将给出日期 12-Oct-2014,但如果数字具有其他格式的日期,它将引发异常。

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;