使用動態sql可以解決。
...
v_sql string(1000);
...
v_sql:='create ...';
execute immediate v_sql;
...

解决方案 »

  1.   

    v_sql:='create table '||v_tabName||' ....';
      

  2.   

    还有创建表的权限
    grant create any table to user_name
      

  3.   

    yeah!不是execute immediate和dbms_sql.execute的区别(这两个在这一方面好像没有不同),也不是JDBC的事,就是没有授权,怪我没有调试清楚;奇怪用户为什么要授权any table才行。
      

  4.   

    是啊,可是我要创建的表就是本用户下的,为什么在动态SQL中执行就需要授权,正常情况就不需要?
      

  5.   

    这是PL/SQL的基础,在存储过程里。
      使用DDL建立表要有明确的CREATE TABLE权限。