با توجه به اینکه اوراکل تنها دستورات اولیه بیتی را دارد (and , or , xor ,not) لذا تقریبا تنها راه ممکن همان است که ذکر کرده اید.
فقط می توانید شروط ساده if , else را با دستور decode مختصر کنید. یعنی:
WITH a AS
(SELECT 7 val
FROM DUAL)
SELECT DECODE (BITAND (a.val, POWER (2, n - 1)), 0, 0, 1) nth_bit
FROM a