Oracle
 sql >> Database >  >> RDS >> Oracle

Divertimento con i messaggi

Di recente, ho visto qualcuno indicare che avevano una tecnologia Oracle in loco alcuni anni fa. Questa tecnologia aveva cambiato SQL*Plus in modo che il suo feedback dicesse qualcosa come "circa XX righe selezionate" invece di "XX righe selezionate". Si chiese come facesse la tecnologia. Dovevo solo approfondire questo aspetto e divertirmi un po'. Sono stato in grado di modificare il testo del feedback ed ecco come appare ora in SQL*Plus per me:

SQL> set feedback 1
SQL> select * from all_users where rownum <3;USERNAME USER_ID CREATED --------------------------- --- ---------- --------- SYS 0 30-JAN-09 SYSTEM 5 30-JAN-09 circa 2 righe selezionate. Dai o prendi.

SQL> seleziona sysdate da dual;

SYSDATE
———
22-AUG-12

1 riga selezionata. Solo uno.

Quindi, come ho fatto in modo che SQL*Plus cambiasse il testo del feedback? Semplice.

1. Vai a $ORACLE_HOME/sqlplus/mesg
2. Crea file di backup di sp1us.msg e sp1us.msb (nota, io sono negli Stati Uniti, quindi la mia installazione è "noi", potresti avere un codice paese a due caratteri diverso).
3. Apri sp1us.msg in un editor di testo. Ho fatto in modo che il file contenesse queste voci:
00005,0, "1 row selected. Just one."
// *Cause:
// *Action:
00006,0, "approximately %ld rows selected. Give or take."
// *Cause:
// *Action:

4. Salva le modifiche ed esci dall'editor.
5. Compila il file msg nel file msb binario.
lmsgen sp1us.msg sqlplus sp1 american

Questo è tutto quello che c'è da fare!

Ho deciso di divertirmi un po' di più. Questa volta, volevo modificare il messaggio consegnato con il messaggio ORA-00942. Quindi ho modificato $ORACLE_HOME/rdbms/mesg/oraus.msg dopo aver fatto un backup di esso e del suo file msb binario. Quindi ho usato LMSGEN per compilare il file msg:
lmsgen oraus.msg rdbms ora american
Ora, quando eseguo una query per una tabella inesistente, ottengo quanto segue:
SQL> select * from no_table;
select * from no_table
*
ERROR at line 1:
ORA-00942: this is not the table you are looking for

Naturalmente, questo è solo per divertimento. Non lo farei mai in un ambiente di produzione. E non sai mai quando una patch modificherà questi file, quindi mantenere i messaggi personalizzati potrebbe richiedere molto tempo a lungo termine. Ma è divertente giocare con questo e dare a qualcuno un po' di confusione la prossima volta che si verifica un errore ORA.