存储过程问题,想创建表,但是表名问题影响到出错。

 create or replace procedure PRC_GZF_BZ_YWSLID(ywslid  in verchar2) as
       L_YWSLID verchar2(30);
       tpg_gzfspbnum verchar2(30);

begin 
        L_YWSLID:=ywslid;
        tpg_gzfspbnum:='tpg_gzfspb'||L_SLIDID;


execute immediate'        
create table tpg_gzfspbnum as select * from
GZF_ZFBZ.tpg_gzfspb@gzf_zfbz where ywslid = L_YWSLID;'


end PRC_GZF_BZ_YWSLID;




上面的SQL,如果创建表名的时候不用execute immediate' ‘又报错,提示说begin和end之间必须要有东西。。。而且这样会读取不到上面的赋值.

求解怎么解决赋值表名

    execute immediate'        
    create table '||tpg_gzfspbnum||' as select * from
    GZF_ZFBZ.tpg_gzfspb@gzf_zfbz where ywslid = '''||L_YWSLID||''';'