execute immediate 'update temp1 set c10= (select ''['' || to_char(LogTIME,''YYYY.MM'') || '']'' from TempTable )';
--上面结果返回[2009.01] execute immediate 'update temp1 set c10= (select to_char(LogTIME,''YYYY.MM'') from TempTable )';
--上面结果返回2009.01.01 但是不加.取出来的数据是正确的.
execute immediate 'update temp1 set c10= (select to_char(LogTIME,''YYYYMM'') from TempTable )';
返回的是200901 为什么? 我怎么才能让上面的语句返回2009.01这种格式?
没分了,只有20分,请见谅.
select to_char(LogTIME,''YYYY.MM'') from TempTable
-------------------- --------------
2009.04 17-4月 -09sys@ORCL> begin
2 execute immediate 'update temp1 set c1=(select to_char(sysdate-56,''yyyy.mm'') from dual)';
3 end;
4 /PL/SQL 过程已成功完成。sys@ORCL> commit;提交完成。sys@ORCL(192.168.21.110)> select * from temp1;C1 C2
-------------------- --------------
2009.02 17-4月 -09
cDate varchar2(10) := '';
begin
execute immediate 'select c10 from temp1' into cDate ;
dbms_output.put_line('org value:' || cDate);
execute immediate 'select to_char(SYSDATE,''YYYY.MM'') from dual' into cDate ;
dbms_output.put_line('updating value:' || cDate);
execute immediate 'update temp1 set c10 = :1' using cDate ;
execute immediate 'select c10 from temp1' into cDate ;
dbms_output.put_line('new value:' || cDate);
end;
逐步确认下
execute immediate不应该有问题的