Функция XOR - непонятки

Mig74
Дата: 30.11.2009 12:30:38
Понадобилась мне агрегатная функция XOR. Начал писать и столкнулся вот с такой странностью
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bit Production
With the Partitioning, OLAP and Data Mining options

SQL> drop FUNCTION Xor;
drop FUNCTION Xor
*
ERROR at line 1:
ORA-04043: object XOR does not exist


SQL> select xor('zz') from dual;
select xor('zz') from dual
       *
ERROR at line 1:
ORA-00904: "XOR": invalid identifier


SQL> CREATE FUNCTION Xor (inp VARCHAR2)  RETURN VARCHAR2 as begin return inp||'qq'; end;
  2  /

Function created.

SQL> select xor('zz') from dual;
select xor('zz') from dual
       *
ERROR at line 1:
ORA-06552: PL/SQL: Statement ignored
ORA-06553: PLS-306: wrong number or types of arguments in call to 'XOR'


SQL> CREATE  FUNCTION Xor_xor (inp VARCHAR2)  RETURN VARCHAR2 as begin return inp||'qq'; end;
  2  /

Function created.

SQL> select xor_xor('zz') from dual;

XOR_XOR('ZZ')
--------------------------------------------------------------------------------
zzqq

SQL>

Т.е. oracle позволяет мне назвать функцию как угодно но не XOR. Если называю XOR начинает ругаться не под делу. Или я чего-то не правильно делаю?
suPPLer
Дата: 30.11.2009 12:49:51
Mig74,

RTFM PL/SQL Reserved Words.
Mig74
Дата: 30.11.2009 13:13:41
Это они типа на будущее зарезервировали или все таки он реализован?
suPPLer
Дата: 30.11.2009 13:20:47
Mig74,

begin
  if xor(true, false) then
    dbms_output.put_line('Yep!');
  else 
    dbms_output.put_line('Nope!');
  end if;
end;
/

PS: Агрегатный XOR я бы в любом случае называл XORAGG. Чтобы подчеркнуть...
Mig74
Дата: 30.11.2009 13:23:23
Понятно. Спасибо.