ORA-00900:无效的SQL语句Oracle错误

时间:2017-03-09 17:07:10

标签: oracle

我是oracle的新手。我正在尝试使用HPDMA工具运行oracle脚本,而HPDMA工具又调用创建表模式的表创建脚本。我在其中一个脚本中收到以下错误:

Table MODEL
declare
*
ERROR at line 1:
ORA-00900: invalid SQL statement
ORA-06512: at line 46

以下是表创建脚本:

SET DEFINE OFF;
Prompt Table MODEL;

declare
    l_count int;
begin

    select  count(*)
    into    l_count
    from    all_tables
    where   owner = 'PORTAL'
    and     table_name = 'MODEL';

     if l_count = 0 then
     execute immediate 
        'CREATE TABLE PORTAL.MODEL
            (
              CONFIG_ID     NUMBER,
              CONFIG_NAME   VARCHAR2(100 BYTE),
              CONFIG_VALUE  VARCHAR2(200 BYTE),
              MODEL_TYPE    VARCHAR2(50 BYTE),
              CONFIG_TYPE   VARCHAR2(100 BYTE),
              IS_ACTIVE     CHAR(1 BYTE),
              CREATED_BY    VARCHAR2(100 BYTE),
              CREATED_ON    DATE,
              UPDATED_BY    VARCHAR2(80 BYTE),
              UPDATED_ON    DATE,
              DESCRIPTION   VARCHAR2(500 BYTE)
            )

            TABLESPACE PORTAL_DATA
            PCTUSED    0
            PCTFREE    10
            INITRANS   1
            MAXTRANS   255
            STORAGE    (
                        INITIAL          64K
                        NEXT             1M
                        MINEXTENTS       1
                        MAXEXTENTS       UNLIMITED
                        PCTINCREASE      0
                        BUFFER_POOL      DEFAULT
                       )
            LOGGING 
            NOCOMPRESS 
            NOCACHE
            NOPARALLEL
            MONITORING';
            execute immediate 'Prompt Non-Foreign Key Constraints on Table MODEL';
            execute immediate 'ALTER TABLE PORTAL.MODEL ADD (
              CONSTRAINT MODEL_CONFIG_ID_PK
              PRIMARY KEY
              (CONFIG_ID)
              ENABLE VALIDATE)';


            execute immediate 'GRANT INSERT, SELECT, UPDATE ON PORTAL.MODEL TO user1';

            execute immediate 'GRANT INSERT, SELECT, UPDATE ON PORTAL.MODEL TO user2';

            execute immediate 'GRANT SELECT ON PORTAL.MODEL TO user3';
 end if;

end;
/

第46行有NOCACHE语句。当我在另一个数据库上运行脚本时,我没有遇到此错误。

任何帮助将不胜感激。谢谢。

1 个答案:

答案 0 :(得分:3)

针对第46行报告错误 - 这是指PL / SQL块中的那一行,而不是整个脚本中的那一行。 PL / SQL块的第46行是:

execute immediate 'Prompt Non-Foreign Key Constraints on Table MODEL';

PROMPT is a SQL*Plus client command.正如错误所说,它不是SQL命令。它在execute immediate为您提供的SQL上下文中无效,它在服务器上运行且与客户端无关。 (例如,您可以通过预定作业运行该块,完全没有客户端交互。)

您需要删除该行。