sql >> データベース >  >> RDS >> Oracle

メッセージを楽しむ

    最近、誰かが数年前にオラクルの技術を現場に持っていたと言っているのを見ました。この技術はSQL*Plusを変更し、フィードバックが「XX行が選択された」だけでなく「約XX行が選択された」などと表示されるようにしました。彼は技術者がそれをどのように行ったのか疑問に思いました。私はこれを掘り下げて楽しんでいました。フィードバックテキストを変更することができました。SQL*Plusでのフィードバックテキストは次のようになります。

    SQL> set Feedback 1
    SQL> select * from all_users where rownum <3; USERNAME USER_ID CREATED --------------------------- --- ---------- --------- SYS030-JAN-09システム530-JAN-09約2行が選択されています。与えるか取るか。

    SQL>デュアルからsysdateを選択します;

    SYSDATE
    ———
    2012年8月22日

    1行が選択されました。 1つだけ。

    では、SQL * Plusでフィードバックテキストを変更するにはどうすればよいですか?シンプル。

    1. $ ORACLE_HOME / sqlplus/mesgに移動します
    2。 sp1us.msgとsp1us.msbのバックアップファイルを作成します(注:私は米国にいるので、インストールは「us」です。別の2文字の国コードがある場合があります)。
    3。テキストエディタでsp1us.msgを開きます。ファイルに次のエントリを作成しました:
    00005,0, "1 row selected. Just one."
    // *Cause:
    // *Action:
    00006,0, "approximately %ld rows selected. Give or take."
    // *Cause:
    // *Action:

    4。変更を保存してエディタを終了します。
    5。 msgファイルをバイナリmsbファイルにコンパイルします。
    lmsgen sp1us.msg sqlplus sp1 american

    これですべてです。

    もう少し楽しむことにしました。今回は、ORA-00942メッセージで配信されるメッセージを変更したいと思いました。そこで、$ ORACLE_HOME / rdbms / mesg / oraus.msgとそのバイナリmsbファイルのバックアップを作成した後、それらを変更しました。次に、LMSGENを使用してmsgファイルをコンパイルしました:
    lmsgen oraus.msg rdbms ora american
    存在しないテーブルをクエリすると、次のようになります。
    SQL> select * from no_table;
    select * from no_table
    *
    ERROR at line 1:
    ORA-00942: this is not the table you are looking for

    もちろん、これはただの楽しみのためです。私はこれを実稼働環境では決して行いません。また、パッチがこのファイルをいつ変更するかわからないため、カスタムメッセージの維持には、長期的には時間がかかる可能性があります。しかし、これで遊んで、次にORAエラーが発生したときに誰かに混乱を与えるのは楽しいことです。


    1. pgAuditを使用したPostgreSQLの監査

    2. MariaDB SUBSTR()の説明

    3. SQLサーバーで日付をフロアする

    4. JDBCを使用したSQLServerLocalDBへの接続