2011-05-03 122 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