Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Zabawa z wiadomościami

Ostatnio widziałem, jak ktoś wskazał, że kilka lat temu miał na miejscu technologię Oracle. Ta technologia zmieniła SQL*Plus tak, że jej opinie mówiły coś w stylu „Wybrano XX wierszy” zamiast „Wybrano XX wierszy”. Zastanawiał się, jak technik to zrobił. Po prostu musiałem się w to zagłębić i dobrze się z tym bawić. Udało mi się zmienić tekst opinii i oto jak wygląda teraz w SQL*Plus dla mnie:

SQL> set feedback 1
SQL> select * from all_users gdzie rownum <3;USER_ID USER_ID CREATED --------------------------- --- ---------- --------- SYS 0 30-STY-09 SYSTEM 5 30-STY-09 Wybrano około 2 wiersze. Dawaj lub bierz.

SQL> wybierz sysdate z dual;

SYSDATE
———
22-SIE-12

Wybrano 1 wiersz. Tylko jeden.

Jak więc zmusiłem SQL*Plus do zmiany tekstu opinii? Proste.

1. Przejdź do $ORACLE_HOME/sqlplus/mesg
2. Utwórz kopie zapasowe sp1us.msg i sp1us.msb (pamiętaj, że jestem w USA, więc moja instalacja to „us”, możesz mieć inny dwuznakowy kod kraju).
3. Otwórz sp1us.msg w edytorze tekstu. Plik ma te wpisy:
00005,0, "1 row selected. Just one."
// *Cause:
// *Action:
00006,0, "approximately %ld rows selected. Give or take."
// *Cause:
// *Action:

4. Zapisz zmiany i wyjdź z edytora.
5. Skompiluj plik msg do binarnego pliku msb.
lmsgen sp1us.msg sqlplus sp1 american

To wszystko!

Postanowiłem się z nim trochę zabawić. Tym razem chciałem zmienić wiadomość dostarczoną wraz z wiadomością ORA-00942. Zmodyfikowałem więc $ORACLE_HOME/rdbms/mesg/oraus.msg po wykonaniu kopii zapasowej tego i jego binarnego pliku msb. Następnie użyłem LMSGEN do skompilowania pliku msg:
lmsgen oraus.msg rdbms ora american
Teraz, gdy wysyłam zapytanie o nieistniejącą tabelę, otrzymuję następujące informacje:
SQL> select * from no_table;
select * from no_table
*
ERROR at line 1:
ORA-00942: this is not the table you are looking for

Oczywiście to tylko dla zabawy. Nigdy nie zrobiłbym tego w środowisku produkcyjnym. I nigdy nie wiadomo, kiedy łatka zmodyfikuje te pliki, więc utrzymywanie niestandardowych wiadomości może być czasochłonne na dłuższą metę. Ale fajnie jest bawić się tym i dać komuś trochę zamieszania, gdy następnym razem trafi na błąd ORA.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle, jak wyeksportować zapytanie do pliku tekstowego/csv

  2. CASE .. WHEN wyrażenie w Oracle SQL

  3. Usuń z dołączeniem w Oracle sql Query

  4. skuteczny sposób na sprawdzenie, czy istnieje wiersz tabeli

  5. Oracle Joins — porównanie składni konwencjonalnej VS ANSI Składnia