同一张表,原来有一字段accessdate存放日期的,但类型是varchar2,现在新建一字段accessdate1,类型是date。现在的想法是通过存储过程将accessdate转换成日期插入到accessdate1中去,过程如下:
declare
  cursor c1 is select count(id) from taccessinfo;
  cursor c2 is select to_date(accessdate,'yyyy-mm-dd') from taccessinfo;
  v_num number;
begin
    for r1 in c1 loop
for r2 in c2 loop
      exit when c1%notfound or c2%notfound;
      insert into taccessinfo(accessdate1) values(r2);
  v_num:=v_num+1;
  if v_num=1000 then
  commit;
  v_num:=0;
  end if;
  end loop;
  end loop;
commit;
end;这个无法实现此功能,求解?

解决方案 »

  1.   

    update yourTableName set accessdate1=to_date(accessdate);
    或者
    update yourTableName set accessdate1=to_date(accessdate,'yyyy-mm-dd hh24:mi:ss');
      

  2.   

    如楼上,不需要存储过程哇,一条语句就好,主要看你原来字段存放的格式是什么
    update taccessinfo set accessdate1=to_date(accessdate,'yyyy-mm-dd');
      

  3.   

    用update  然後用TO_date函數把值改了就可以了,希望能夠幫到你吧!
      

  4.   

    cursor c2 is select to_date(accessdate,'yyyy-mm-dd') as acc_date from taccessinfo;insert into taccessinfo(accessdate1) values(r2);r2是个cursor,可以这样用的吗?应该是r2.acc_date吧
      

  5.   

    update taccessinfo set accessdate1=to_date(accessdate,'yyyy-mm-dd hh24:mi:ss');
      

  6.   

    直接update的时候进行类型转换就好了,使用to_date函数就OK了,不需要单独写个存储过程进行转换