p_tmp:='crdt'||sysdate insert into p_tmp(hh,xydj) select hh,djdm from crdt_tmp,t_pjgz where pxbm=p_pxbm ;我要插入数据的表应该是 crdt20060322  但是用上面的语句就直接插到了p_tmp表里面去了,怎么才能将数据插入到crdt20060322的表呢?在线急等!!

解决方案 »

  1.   

    动态插入EXECUTE IMMEDIATE 'insert into crdt20060322(...) values(...)';
      

  2.   

    p_tmptab:='insert into '||p_tmp||'(hh,xydj) select hh,djdm from crdt_tmp,t_pjgz where pxbm=p_pxbm' ;EXECUTE IMMEDIATE p_tmptab 我试了这个语句 但是报错  是不是写的不对?
      

  3.   

    p_tmptab:='insert into '||p_tmp||'(hh,xydj) select hh,djdm from crdt_tmp,t_pjgz where pxbm=:p_pxbm' using p_pxbm;
      

  4.   

    把你的动态表名中的sysdate换成字符行的
    p_tmp:='crdt'||to_char(sysdate,'yyyymmdd');
      

  5.   

    报什么错误亚?尤其你的sysdate要先得到放到一个变量里面去
    然后再用一个字符串变量存放这个语句(表名要合成的),应该没有问题的,我现在的工作很多都是这样做的