oracle存储过程创造一个表名由程序输入的表

oracle存储过程创建一个表名由程序输入的表初学oracle,要创建一个表,表名是在程序中由用户输入参数决定(如

oracle存储过程创建一个表名由程序输入的表
初学oracle,要创建一个表,表名是在程序中由用户输入参数决定(如输入001),在程序中调用此存储过程,创建一个表,名为aaa001(aaa是固定的).然后向表中插入数据,加入一行数据,同时删除源数据表中对应的一行数据。

目前只会创建表如下:
create or replace procedure pro_create is
begin
  execute immediate 'create table pflsjl201102 //这里想要做到表名后面的日期是通过程序输入可控的
  (
  cpdxdm int,
  cpdxmc varchar2(50),
  cprydm int,
  cpryxm varchar2(30),
  kkrwh int,
  bprydm int,
  bprymc varchar2(30),
  pjzbdm int,
  pjzbmc varchar2(200),
  pfdj number(12),
  pfsj date
  )';
end pro_create;

另外一个问题就是,从别的表中选出数据插入新建的表,如 
insert into pflsjl201102 (cpdxdm,cpdxmc)
select dm,mc from cpdx;
但是要求数据是一条一条取出来,取一条删一条,这样的话是不是一定要用游标实现,还是有什么更简便的办法?

请高手帮助,谢谢!

[解决办法]
这样OK?

SQL code
CREATE TABLE tabsrc(id NUMBER(5),sname VARCHAR2(50));INSERT INTO tabsrc SELECT LEVEL,dbms_random.string('P',8 ) FROM dual CONNECT BY LEVEL<=20;CREATE OR REPLACE PROCEDURE p001(p_tablename IN VARCHAR2) AS v_id  tabsrc.id%TYPE;v_sname tabsrc.sname%TYPE;BEGIN  execute IMMEDIATE 'create table aaa'||p_tablename||'(id number(5),sname varchar2(50))';  BEGIN     select id,sname INTO v_id,v_sname from tabsrc where rownum=1;    EXCEPTION WHEN No_Data_Found THEN     raise_application_error(-20102,'** Thats no data in tabsrc now! **');  END;  Dbms_Output.put_line('value:'||v_id||v_sname);  execute IMMEDIATE 'insert into aaa'||p_tablename||' values ('''||v_id||''','''||v_sname||''')';  IF SQL%ROWCOUNT=1 THEN     DELETE FROM tabsrc WHERE id=v_id AND sname=v_sname;  END IF;END p001;EXEC p001('001');Line    Pos    Text23        PL/SQL block, executed in 0.047 sec.        value:1|pSn%@~8        Total execution time 0.047 sec.SELECT * FROM aaa001;ID    SNAME1    |pSn%@~8SELECT Count(*) FROM tabsrc WHERE id=1 AND sname='pSn%@~8';COUNT(*)0
[解决办法]
探讨
引用:

引用:

引用:

这样OK?
SQL code
CREATE TABLE tabsrc(id NUMBER(5),sname VARCHAR2(50));
INSERT INTO tabsrc SELECT LEVEL,dbms_random.string('P',8 ) FROM dual CONNECT BY LEV……

[解决办法]
探讨

引用:

这只是一个简单的原型,你要insert多条数据,可以改变条件就是
比如
insert into aaa'||p_tablename||' select 字段 from tabsrc where 条件'

然后delete from tabsrc where 条件..

‘insert into aaa'||p_tablename||' select ……