oracle触发器查询中的问题
Posted
技术标签:
【中文标题】oracle触发器查询中的问题【英文标题】:Problem in oracle trigger query 【发布时间】:2010-01-26 06:05:28 【问题描述】:谁能告诉我这个查询有什么问题?
create trigger Test_trigger
before insert on Test for each row
begin select TestSequence.nextval into :new.id from dual;
end;/
当我运行此查询时,我收到以下错误:
第 1 行出现错误:PLS-00103:在预期以下情况之一时遇到符号“文件结尾”:
; 符号“;”被替换为“文件结尾”以继续。
我正在使用 Oracle 10g 快捷版。
【问题讨论】:
【参考方案1】:结尾的“/”是 SQL*Plus 语法。您可能正在使用 Oracle Apex 中的 SQL 工具 - 在这种情况下,请省略“/”。
【讨论】:
谢谢。我没有意识到这一点。稍后会在 Apex 中使用 sql 命令时记住这一点。【参考方案2】:如果您删除末尾的“/”,它应该可以工作。
【讨论】:
奇怪,因为我在 Oracle 10g XE 中测试了您的确切代码(减去“/”),它工作得很好..(当然,我也创建了一个虚拟表和一个序列)。也许您将其用作脚本的一部分,而错误在脚本的其他地方? 请看我上面包含的脚本。【参考方案3】:这是我要执行的脚本:
drop index TestTableIdx1;
drop index TestIdx1;
drop index TestIdx2;
drop table Test;
drop sequence TestSequence;
drop table TestTable;
create table TestTable (
objId number NOT NULL,
type varchar(16) NOT NULL,
title varchar(192) ,
url varchar(192) ,
primary key(objId, type)
);
create table Test (
id number NOT NULL,
objId number NOT NULL,
type varchar(16) NOT NULL,
timeslot timestamp NOT NULL,
contextId number ,
pubId number NOT NULL,
category varchar(24),
meta varchar(32),
pageviews number NOT NULL,
aggrLevel number NOT NULL,
primary key(id)
);
create table Dummy (
id int NOT NULL,
primary key(id)
);
create sequence TestSequence
start with 1
increment by 1
nomaxvalue;
create trigger Test_trigger
before insert on Test
for each row
begin
select TestSequence.nextval into :new.id from dual;
end;
/
create index TestTableIdx1 on TestTable (
objId desc, type asc
);
create index TestIdx1 on Test (
timeslot desc, objId desc, type asc
);
create index TestIdx2 on Test (
timeslot desc
);
create index TestIdx3 on Test (
objId desc, type asc
);
create index TestIdx4 on Test (
contextId desc
);
【讨论】:
您的脚本运行良好....我使用 sqldeveloper 完全按照上述方式测试了您的代码。 是的,脚本运行得很好。尽管在这种情况下我对此表示怀疑,但这可能是一些奇怪的预言机问题?假设您正在使用 SqlDeveloper,请尝试重新启动它? 谢谢。我尝试运行它两次。我会再尝试。我正在通过 Web 界面运行脚本。不知道我做错了什么!:( 为什么您的索引定义中有“desc”和“asc”? Oracle 索引是双向的。 我再次尝试执行脚本;这次它运行正常!我仍然不知道我以前做错了什么。但我很高兴它有效。:D 感谢 Liao 和 poh 的帮助。以上是关于oracle触发器查询中的问题的主要内容,如果未能解决你的问题,请参考以下文章