我在第7行得到的错误(见下面的代码),它以10克指定为:错误编译EXCEPTION_INIT()语句忽略Oracle 10g中
"Statement ignored"
任何人都可以告诉我我做错了什么?
create or replace trigger demo1_bifer
BEFORE INSERT ON demo1
FOR EACH ROW
declare
lock_id number;
resource_busy exception;
pragma EXCEPTION_INIT(resource_busy,-54);
begin
lock_id := dbms_utility.get_hash_value(to_char(:new.x),0,1024);
if (dbms_lock.request(id => lock_id,lockmode => dbms_lock.x_mode, timeout => 0, release_on_commmit => TRUE) not in (0,4))
then raise resource_busy;
end if;
end;
/
刚试过,我得到'PLS-00306:错误号码或类型的参数在'REQUEST''调用。类型看起来不错(整数,整数,整数,布尔值)。在我们继续前进之前,这是你看到的同样的错误吗?它与'pragma exception_init'没有关系。 –
@WilliamRobertson。我得到的错误是“语句被忽略”,而不是PLS-00306。我正在使用Oracle 10g Express Edition。我不知道我得到这个错误的原因。那么,如果它与编译指示exception_init没有关系,那么你能否指定错误与什么有关? – Mukund
请编辑您的问题,以包含与此触发器有关的所有错误的**完整**细节,而不仅仅是第一个。在SQL * Plus中输入'SHOW ERRORS TRIGGER demo1_bifer'来查看此触发器的所有错误。 PL/SQL编译器可能会选择忽略某个语句的原因有很多,“忽略语句”下面的下一个错误会告诉你为什么。另请注意,行号从'declare'行开始计数,所以第7行是开始的行'if(dbms_lock.request ...'。 –