sql >> Base de Datos >  >> RDS >> Oracle

Diversión con mensajes

Recientemente, vi a alguien indicar que tenían un técnico de Oracle en el sitio hace algunos años. Esta tecnología había cambiado SQL*Plus para que sus comentarios dijeran algo así como "sobre XX filas seleccionadas" en lugar de solo "XX filas seleccionadas". Se preguntó cómo la tecnología hizo eso. Solo tenía que profundizar en esto y divertirme un poco. Pude cambiar el texto de retroalimentación y así es como se ve ahora en SQL*Plus para mí:

SQL> establecer comentarios 1
SQL> seleccionar * de todos_usuarios donde número de fila <3;NOMBRE DE USUARIO ID_USUARIO CREADO --------------------------- --- ---------- --------- SYS 0 30-ENE-09 SYSTEM 5 30-ENE-09 aproximadamente 2 filas seleccionadas. Dar o recibir.

SQL> seleccione sysdate desde dual;

SYSDATE
———
22-AGO-12

1 fila seleccionada. Solo uno.

Entonces, ¿cómo conseguí que SQL*Plus cambiara el texto de los comentarios? Sencillo.

1. Vaya a $ORACLE_HOME/sqlplus/mesg
2. Cree archivos de copia de seguridad de sp1us.msg y sp1us.msb (tenga en cuenta que estoy en los EE. UU., por lo que mi instalación es "nosotros", es posible que tenga un código de país diferente de dos caracteres).
3. Abra sp1us.msg en un editor de texto. Hice que el archivo tuviera estas entradas:
00005,0, "1 row selected. Just one."
// *Cause:
// *Action:
00006,0, "approximately %ld rows selected. Give or take."
// *Cause:
// *Action:

4. Guarde sus cambios y salga del editor.
5. Compile el archivo msg en el archivo msb binario.
lmsgen sp1us.msg sqlplus sp1 american

¡Eso es todo al respecto!

Decidí divertirme un poco más con eso. Esta vez, quería cambiar el mensaje entregado con el mensaje ORA-00942. Así que modifiqué $ORACLE_HOME/rdbms/mesg/oraus.msg después de hacer una copia de seguridad de él y su archivo binario msb. Luego usé LMSGEN para compilar el archivo msg:
lmsgen oraus.msg rdbms ora american
Ahora, cuando busco una tabla que no existe, obtengo lo siguiente:
SQL> select * from no_table;
select * from no_table
*
ERROR at line 1:
ORA-00942: this is not the table you are looking for

Por supuesto, esto es sólo por diversión. Nunca haría esto en un entorno de producción. Y nunca se sabe cuándo un parche modificará estos archivos, por lo que mantener mensajes personalizados podría llevar mucho tiempo a largo plazo. Pero es divertido jugar con esto y confundir a alguien la próxima vez que se produzca un error ORA.