Developpez.com - Oracle
X

Choisissez d'abord la catégorieensuite la rubrique :


Les Fonctions Cachées d'Oracle : SYS_OP_

Date de publication : le 20 Octobre 2006

Par Mohammed Bouayoun
 

Ce tutoriel présente les fonctions cachées d'Oracle.

I. Les fonctions logiques
I-A. SYS_OP_VECAND
I-B. SYS_OP_VECOR
I-C. SYS_OP_VECXOR
I-D. SYS_OP_VECBIT
II. Les Fonctions de Conversions
II-A. SYS_OP_NUMTORAW
II-B. SYS_OP_RAWTONUM
II-C. SYS_OP_BL2R
II-D. SYS_OP_C2C
III. Les Fonctions de Comparaisons
III-A. SYS_OP_DISTINCT
IV. Autres
IV-A. SYS_OP_OPNSIZE
IV-B. SYS_OP_IIX
IV-C. SYS_OP_NII
V. A voir
V-A. SYS_OP_PAR
V-B. SYS_OP_GROUPING

Ces fonctions, peuvent être supprimés d'une version à une autre.


I. Les fonctions logiques


I-A. SYS_OP_VECAND

Cette fonction effectue un AND logique sur les bits d'un octet. Par exemple,
SQL> select SYS_OP_VECAND('EE','55') from dual;

SY
--
44
Voir : BITAND


I-B. SYS_OP_VECOR

Cette fonction effectue un OU logique sur les bits d'un octet. Par exemple,
SQL> select SYS_OP_VECOR('AA','66') from dual;

SY
--
EE
Il n'existe aucune fonction documentée par Oracle qui éffectue un OU logique. Pour cela, on utilise la fonction BITAND pour crée notre nouvelle fonction BITOR.
CREATE OR replace FUNCTION bitor( x IN NUMBER, y IN NUMBER ) RETURN NUMBER  AS
BEGIN
    RETURN x + y - bitand(x,y);
END;
/
Et, pour le XOR logique on crée la fonction BITXOR par :
CREATE OR replace FUNCTION bitxor( x IN NUMBER, y IN NUMBER ) RETURN NUMBER  AS
BEGIN
    RETURN bitor(x,y) - bitand(x,y);
END;
/

I-C. SYS_OP_VECXOR

Cette fonction effectue un XOR logique sur les bits d'un octet. Par exemple,
SQL> select SYS_OP_VECXOR('EE','55') from dual;

SY
--
BB

I-D. SYS_OP_VECBIT

La fonction SYS_OP_VECBIT lit les bits de droite à gauche en numérotant le premier bit par zero. Elle retourne la valeur du n ièmme bit.
SQL> select SYS_OP_VECBIT('D',0),SYS_OP_VECBIT('D',1),SYS_OP_VECBIT('D',2),SYS_OP_VECBIT('D',3) from dual;

SYS_OP_VECBIT('D',0) SYS_OP_VECBIT('D',1) SYS_OP_VECBIT('D',2) SYS_OP_VECBIT('D',3)
-------------------- -------------------- -------------------- --------------------
                   1                    0                    1                    1
On a bien D = 1 1 0 1 . Il faut lire le resultat de la requête de droite à gauche.


II. Les Fonctions de Conversions


II-A. SYS_OP_NUMTORAW

La fonction SYS_OP_NUMTORAW, convertit un entier décimal en héxadecimal.
SQL> select SYS_OP_NUMTORAW(10) from dual;

SY
--
0A

II-B. SYS_OP_RAWTONUM

La fonction SYS_OP_RAWTONUM, convertit un entier héxadecimal en décimal.
SQL> select SYS_OP_RAWTONUM('A') from dual;

SYS_OP_RAWTONUM('A')
--------------------
                  10

II-C. SYS_OP_BL2R


II-D. SYS_OP_C2C


III. Les Fonctions de Comparaisons


III-A. SYS_OP_DISTINCT

La fonction SYS_OP_DISTINCT consiste à comparé les lignes de deux colonnes de même type, elle retourne la valeur 0 s'ils sont égaux et 1 sinon.
SQL> create table test1 (v1 number, v2 number);

Table créée.

SQL> insert into test1 values (1,1);

1 ligne crÚÚe.

SQL> insert into test1 values (1,17);

1 ligne créée.

SQL> commit;

Validation effectuée.

SQL> select SYS_OP_DISTINCT(v1,v2) from test1;

SYS_OP_DISTINCT(V1,V2)
----------------------
                     0
                     1

IV. Autres


IV-A. SYS_OP_OPNSIZE


IV-B. SYS_OP_IIX


IV-C. SYS_OP_NII


V. A voir


V-A. SYS_OP_PAR



V-B. SYS_OP_GROUPING



Valid XHTML 1.1!Valid CSS!

Ce document est issu de http://www.developpez.com et reste la propriété exclusive de son auteur. La copie, modification et/ou distribution par quelque moyen que ce soit est soumise à l'obtention préalable de l'autorisation de l'auteur.
Contacter le responsable de la rubrique Oracle