问题描述
我的开发人员有一个触发器,我可以在我的数据库服务器上的12.1.0.2 sqlplus中运行,没有问题。但是,他无法使其从应用程序服务器运行-它正在使用11.2.0.4即时客户端。
有问题的代码是:
在数据库服务器上的12.1.0.2 sqlplus中,它编译没有问题。
对于11.2.0.4即时客户端,它失败了:
它似乎将选择请求行末尾的; 视为SQL块的末尾,而不是继续到/
我升级到12.1.0.2即时客户端,它按预期工作。我是否缺少11.2.0.4中无效代码的明显和愚蠢的东西?
有问题的代码是:
CREATE OR REPLACE EDITIONABLE TRIGGER "ORDER_BROKER"."REQUEST_COUNTER_TRG" BEFORE INSERT ON REQUEST_COUNTER FOR EACH ROW BEGIN <> BEGIN IF INSERTING AND :NEW.REQUEST_COUNTER_ID IS NULL THEN SELECT REQUEST_COUNTER_SEQ.NEXTVAL INTO :NEW.REQUEST_COUNTER_ID FROM SYS.DUAL; END IF; END COLUMN_SEQUENCES; END; /
在数据库服务器上的12.1.0.2 sqlplus中,它编译没有问题。
对于11.2.0.4即时客户端,它失败了:
Warning: Trigger created with compilation errors. SP2-0042: unknown command "END IF" - rest of line ignored. SP2-0734: unknown command beginning "END COLUMN..." - rest of line ignored. SP2-0042: unknown command "END" - rest of line ignored.
它似乎将选择请求行末尾的; 视为SQL块的末尾,而不是继续到/
我升级到12.1.0.2即时客户端,它按预期工作。我是否缺少11.2.0.4中无效代码的明显和愚蠢的东西?
专家解答
如果它在12.1.0.2即时客户端中有效,我怀疑它是11.2.0.4客户端中的错误。
根据你的,我的12个即时客户没有戏剧
根据你的,我的12个即时客户没有戏剧
C:\oracle\instantclient>sqlinst SQL*Plus: Release 12.1.0.2.0 Production on Thu May 25 10:00:53 2017 Copyright (c) 1982, 2014, Oracle. All rights reserved. SQL> conn scott/tiger@//localhost:1521/db122 Connected. SQL> create table REQUEST_COUNTER ( REQUEST_COUNTER_ID int ); Table created. SQL> create sequence REQUEST_COUNTER_SEQ; Sequence created. SQL> CREATE OR REPLACE EDITIONABLE TRIGGER REQUEST_COUNTER_TRG 2 BEFORE INSERT ON REQUEST_COUNTER 3 FOR EACH ROW 4 BEGIN 5 <> 6 BEGIN 7 IF INSERTING AND :NEW.REQUEST_COUNTER_ID IS NULL THEN 8 SELECT REQUEST_COUNTER_SEQ.NEXTVAL INTO :NEW.REQUEST_COUNTER_ID FROM SYS.DUAL; 9 END IF; 10 END COLUMN_SEQUENCES; 11 END; 12 / Trigger created.
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




