我是Oracle的新手。我正在尝试使用HPDMA工具运行Oracle脚本,该工具依次调用创建表格架的表创建脚本。我在其中一个脚本中遇到以下错误:
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语句。当我在其他数据库上运行脚本时,我没有这个错误。
任何帮助将不胜感激。谢谢。
针对第46行报道了错误 - 它指的是PL/SQL块中的该行,而不是在整个脚本中。PL/SQL块的第46行是:
execute immediate 'Prompt Non-Foreign Key Constraints on Table MODEL';
PROMPT
是一个sql*加上客户端命令。正如错误所说,这不是SQL命令。在SQL上下文中,execute immediate
为您提供了在服务器上运行的,并且与客户端无关。(例如,您可以通过计划的作业运行该块,而完全没有客户端交互)。
您需要删除该行。