2011-05-03 116 views
3

当我在plsql过程的主体中使用create语句时出现错误 PLS-00103在遇到以下其中一种情况时遇到符号create ... 有人可以告诉我这是什么原因和解决方案。在创建plsql过程中的表时出错

+1

为什么要从PL/SQL创建表?通常这不是一件好事。 – 2011-05-03 10:18:31

回答

5

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

  • 使用:
    EXECUTE IMMEDIATE 'CREATE ' || 'your command'为字符串。

  • 使用SYS.DBMS_SQL系统包。
    curs := dbms_sql.open_cursor
    dbms_sql.parse (curs, 'create ...')
    dbms_sql.execute (curs)
    dbms_sql.close_cursor (curs)

  • 使用SYS.DBMS_DDL如果你想创建一个包装过程。

+0

并且可能将priv更改为authid current_user – tbone 2011-05-05 12:06:29

+0

当我尝试访问临时表时,出现一条表明表不存在的错误。显然这是正确的,因为该表尚未创建。它会在运行时出现,但是有什么办法让函数在此期间编译? – Stopher87 2012-03-01 00:43:10

+1

@ Stopher87我知道你有一块pl/sql可以创建一个表并在里面添加一些行。答案是不”。但是你可以做的是使用动态sql来填充你的临时表。你只是继续使用语句,如执行即时'插入到tmptab(col1,... coln)值(val1,... valn)'等等等。 – 2012-03-01 03:51:41