我是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语句。当我在另一个数据库上运行脚本时,我没有遇到此错误。
任何帮助将不胜感激。谢谢。
答案 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上下文中无效,它在服务器上运行且与客户端无关。 (例如,您可以通过预定作业运行该块,完全没有客户端交互。)
您需要删除该行。