Buen día en esta oportunidad mostraré un forma para poder REGISTRAR y OBTENER un campo de tipo RAW en ORACLE.
Muchas veces las empresas utilizan el tipo RAW para registrar información importante como password. Este tipo de dato es de tipo Binario y esta representada en Hexadecimal.
Oracle maneja un paquete que facilita su manejo llamado: UTL_RAW, la sintaxis para su manipulación es la siguiente:
Supongamos que tenemos la siguiente tabla:
--TABLE:
CREATE TABLE TB_ENCRIPTACION(
ID NUMBER,
TEXTO_ORIGINAL VARCHAR2(100),
TEXTO_ENCRIPTADO VARCHAR2(100),
KEY_ENCRIPTACION RAW(32)
)
Para registrar datos deberiamos hacer lo siguiente:
--INSERTs:
INSERT INTO TB_ENCRIPTACION VALUES( 1,
'JAVAMAN',
'fJPHMyGaPqw=',
UTL_RAW.CAST_TO_RAW( 'I6N8X7Y6J7U2P8D4P1M4L7I5F4Y8K5F5' )
);
INSERT INTO TB_ENCRIPTACION VALUES( 2,
'CESAR RICARDO GUERRA ARNAIZ',
'J3cW/OT/squ0ZtkDNyKOh6aHUGjFN2ukdWDu1FJEMe0=',
UTL_RAW.CAST_TO_RAW( 'G5R3Q3K2F7R1M2N4O3W5D3X1R6J7J6X7' )
);
Si por ejemplo queremos ingresar el capo: KEY_ENCRIPTACION, de manera directa, obtendremos un error de tipo ORA.
Debido a ello para obtener los datos fecilmente realizamos lo siguiente:
--SELECTs:
SELECT X.ID,
X.TEXTO_ORIGINAL,
X.TEXTO_ENCRIPTADO,
X.KEY_ENCRIPTACION,
UTL_RAW.CAST_TO_VARCHAR2( X.KEY_ENCRIPTACION ) AS KEY_STRING
FROM TB_ENCRIPTACION X;
Este QUERY realizaría un PARSER para obtener el texto correcto dentro del campo de tipo RAW.
Bueno es todo por ahora.
Saludos