在plsql过程中使用创建表时出错

在plsql过程中使用创建表时出错,plsql,Plsql,当我在plsql过程的主体中使用create语句时,我得到了一个错误 PLS-00103在预期以下情况之一时遇到符号创建。。。。 有人能告诉我这是什么原因和解决方案吗。在PL/SQL中,不能直接使用DDL语句。你也可以 用法: 以字符串形式立即执行“创建”| |“您的命令” 使用SYS.DBMS\u SQL系统包。 curs:=dbms\u sql.打开\u游标 dbms\u sql.parse(curs'create…) dbms\u sql.execute(curs) dbms\u sql

当我在plsql过程的主体中使用create语句时,我得到了一个错误 PLS-00103在预期以下情况之一时遇到符号创建。。。。
有人能告诉我这是什么原因和解决方案吗。

在PL/SQL中,不能直接使用DDL语句。你也可以

  • 用法:
    以字符串形式立即执行“创建”| |“您的命令”

  • 使用SYS.DBMS\u SQL系统包。
    curs:=dbms\u sql.打开\u游标

    dbms\u sql.parse(curs'create…)

    dbms\u sql.execute(curs)

    dbms\u sql.close\u游标(curs)

  • 如果要创建包装过程,请使用SYS.DBMS_DDL


为什么要从PL/SQL创建表?通常情况下,这不是一件理想的事情。当我尝试访问临时表时,可能会将priv更改为authid current_users,但我会收到一个错误,表示该表不存在。显然,这是正确的,因为尚未创建表。它将在运行时出现,但有没有办法让函数同时编译?@Stopher87我知道您有一段pl/sql,它创建了一个表并在其中添加了一些行。答案是“不”。但是,您可以继续使用动态sql填充临时表。您只需继续使用诸如executeimmediate“insert into tmptab(col1,…coln)values(val1,…valn)”等语句,我明白了。在这种情况下,更好的解决方案可能是在函数外部创建表并将其称为“something_temp_table”,并在开始时刷新它,以便干净地使用。这样,您就可以干净地编译代码,而不必担心表的存在。