暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 11.2.0.4即时客户端中的奇怪行为

askTom 2017-05-24
468

问题描述

我的开发人员有一个触发器,我可以在我的数据库服务器上的12.1.0.2 sqlplus中运行,没有问题。但是,他无法使其从应用程序服务器运行-它正在使用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个即时客户没有戏剧

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进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论