Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Bersenang-senang Dengan Pesan

Baru-baru ini, saya melihat seseorang menunjukkan bahwa mereka memiliki teknologi Oracle di situs beberapa tahun yang lalu. Teknologi ini telah mengubah SQL*Plus sehingga umpan baliknya mengatakan sesuatu seperti "tentang XX baris yang dipilih" bukan hanya "XX baris yang dipilih". Dia bertanya-tanya bagaimana teknologi melakukan itu. Saya hanya harus menggali ini dan bersenang-senang dengannya. Saya dapat mengubah teks umpan balik dan inilah tampilannya sekarang di SQL*Plus untuk saya:

SQL> atur umpan balik 1
SQL> pilih * dari all_users di mana rownum <3;USERNAME USER_ID DIBUAT --------------------------- --- ---------- --------- SYS 0 30-JAN-09 SYSTEM 5 30-JAN-09 kira-kira 2 baris dipilih. Memberi atau menerima.

SQL> pilih sysdate dari dual;

SYSDATE
———
22-AUG-12

1 baris dipilih. Hanya satu.

Jadi bagaimana saya mendapatkan SQL*Plus untuk mengubah teks umpan balik? Sederhana.

1. Buka $ORACLE_HOME/sqlplus/mesg
2. Buat cadangan file sp1us.msg dan sp1us.msb (perhatikan, saya di AS jadi instalasi saya adalah “kami”, Anda mungkin memiliki kode negara dua karakter yang berbeda).
3. Buka sp1us.msg di editor teks. Saya membuat file memiliki entri ini:
00005,0, "1 row selected. Just one."
// *Cause:
// *Action:
00006,0, "approximately %ld rows selected. Give or take."
// *Cause:
// *Action:

4. Simpan perubahan Anda dan keluar dari editor.
5. Kompilasi file msg ke dalam file msb biner.
lmsgen sp1us.msg sqlplus sp1 american

Itu saja!

Saya memutuskan untuk sedikit lebih bersenang-senang dengannya. Kali ini, saya ingin mengubah pesan yang dikirim dengan pesan ORA-00942. Jadi saya memodifikasi $ORACLE_HOME/rdbms/mesg/oraus.msg setelah membuat cadangannya dan file msb binernya. Kemudian saya menggunakan LMSGEN untuk mengkompilasi file msg:
lmsgen oraus.msg rdbms ora american
Sekarang ketika saya meminta tabel yang tidak ada, saya mendapatkan yang berikut:
SQL> select * from no_table;
select * from no_table
*
ERROR at line 1:
ORA-00942: this is not the table you are looking for

Tentu saja, ini hanya untuk bersenang-senang. Saya tidak akan pernah melakukan ini di lingkungan produksi. Dan Anda tidak pernah tahu kapan tambalan akan memodifikasi file ini sehingga mempertahankan pesan khusus bisa memakan waktu lama. Tapi menyenangkan untuk bermain dengan ini dan membuat seseorang kebingungan saat berikutnya melakukan kesalahan 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. Bagaimana menemukan apakah suatu nilai ada dalam VARRAY

  2. Fungsi GREATEST() di Oracle

  3. cara mengonversi csv ke tabel di oracle

  4. Fungsi NLS_CHARSET_NAME() di Oracle

  5. bagaimana mengganti huruf beraksen di kolom varchar2 di oracle