Skip to Main Content

SQL & PL/SQL

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

BITOR, BITXOR, BITNOT - where to place them?

551707Apr 15 2007 — edited Apr 16 2007

Currently, Oracle has only one bitwise operator - BITAND. All other bitwise operators, such as
BITOR, BITXOR, BITNAND, BITNOR, BITXNOR and BITNOT, must be derived from BITAND
and/or other (from it) consecutively derived operators.

I've created three functions for three bitwise operators : BITOR, BITXOR and BITNOT:

-- BITOR
CREATE FUNCTION "SYS"."BITOR" (x IN NUMBER, y IN NUMBER) RETURN NUMBER AS
BEGIN
  RETURN (x + y - BITAND(x, y));
END;
/
GRANT EXECUTE ON SYS.BITOR TO PUBLIC;
CREATE PUBLIC SYNONYM "BITOR" FOR "SYS"."BITOR";


-- BITXOR
CREATE FUNCTION "SYS"."BITXOR" (x IN NUMBER, y IN NUMBER) RETURN NUMBER AS
BEGIN
  RETURN (BITOR(x, y) - BITAND(x, y));
END;
/
GRANT EXECUTE ON SYS.BITXOR TO PUBLIC;
CREATE PUBLIC SYNONYM "BITXOR" FOR "SYS"."BITXOR";


-- BITNOT
CREATE FUNCTION "SYS"."BITNOT" (x IN NUMBER) RETURN NUMBER AS
BEGIN
  RETURN (-1 - x);
END;
/
GRANT EXECUTE ON SYS.BITNOT TO PUBLIC;
CREATE PUBLIC SYNONYM "BITNOT" FOR "SYS"."BITNOT";

The functions are created in SYS schema and works well. My question is:

whenever a system-wide accessible function (a function available to all users just like
any other Oracle's built-in function) is to be created, what is appropriate place to
create it? Is it SYS, SYSTEM or SYSAUX schema?

Also, if anyone has a better coding solution for these functions (operators), please let
me know.

Thanks a lot.

Albert

Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on May 14 2007
Added on Apr 15 2007
4 comments
14,305 views