sql >> Databáze >  >> RDS >> Oracle

Zábava se zprávami

Nedávno jsem viděl někoho, kdo naznačil, že před několika lety měl na místě technologii Oracle. Tato technologie změnila SQL*Plus tak, že její zpětná vazba říkala něco jako „vybráno asi XX řádků“ namísto pouze „vybráno XX řádků“. Zajímalo ho, jak to ten technik udělal. Prostě jsem se do toho musel prohrabat a užít si to. Podařilo se mi změnit text zpětné vazby a takto to pro mě nyní vypadá v SQL*Plus:

SQL> nastavit zpětnou vazbu 1
SQL> vybrat * ze všech_uživatelů, kde rownum <3;UŽIVATELSKÉ JMÉNO USER_ID VYTVOŘENO --------------------------- --- ---------- --------- SYS 0 30-JAN-09 SYSTEM 5 30-JAN-09 vybrány přibližně 2 řádky. Dávat nebo brát.

SQL> vyberte sysdate z dual;

SYSDATE
———
22-AUG-12

Je vybrán 1 řádek. Jen jeden.

Jak jsem tedy přiměl SQL*Plus změnit text zpětné vazby? Jednoduché.

1. Přejděte na $ORACLE_HOME/sqlplus/mesg
2. Vytvořte záložní soubory sp1us.msg a sp1us.msb (poznámka, jsem v USA, takže moje instalace je „nás“, můžete mít jiný dvoumístný kód země).
3. Otevřete soubor sp1us.msg v textovém editoru. Vytvořil jsem, aby soubor měl tyto položky:
00005,0, "1 row selected. Just one."
// *Cause:
// *Action:
00006,0, "approximately %ld rows selected. Give or take."
// *Cause:
// *Action:

4. Uložte změny a ukončete editor.
5. Zkompilujte soubor msg do binárního souboru msb.
lmsgen sp1us.msg sqlplus sp1 american

To je všechno!

Rozhodl jsem se, že si to užiju trochu víc. Tentokrát jsem chtěl změnit zprávu doručenou zprávou ORA-00942. Upravil jsem tedy $ORACLE_HOME/rdbms/mesg/oraus.msg poté, co jsem vytvořil jeho zálohu a jeho binární soubor msb. Poté jsem pomocí LMSGEN zkompiloval soubor msg:
lmsgen oraus.msg rdbms ora american
Nyní, když se dotazuji na neexistující tabulku, dostanu následující:
SQL> select * from no_table;
select * from no_table
*
ERROR at line 1:
ORA-00942: this is not the table you are looking for

Samozřejmě je to jen pro zábavu. V produkčním prostředí bych to nikdy neudělal. A nikdy nevíte, kdy oprava změní tyto soubory, takže udržování vlastních zpráv může být z dlouhodobého hlediska časově náročné. Ale je zábavné si s tím hrát a někoho zmást, až příště zasáhne chybu ORA.


  1. Uložte data v metodě onDestroy aktivity

  2. Předání pole dat jako vstupního parametru proceduře Oracle

  3. T-SQL úterý #64:Jeden spouštěč nebo mnoho?

  4. Jak mohu vybrat mezi 1. dnem aktuálního měsíce a aktuálním dnem v MySQL?