Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.
この項では、プロシージャ、トリガ、ユーザ定義関数、バッチを作成するときのヒントについて説明します。
プロシージャを書き込むときに、文デリミタを変更する必要はありません。他のブラウズツールを使う場合には、文デリミタをセミコロンから他の文字に変更する必要がある場合があります。
プロシージャ内の各文はセミコロンで終わります。ブラウズするアプリケーションが CREATE PROCEDURE 文自体を解析するには、文デリミタにセミコロン以外の文字を使用する必要があります。
文デリミタを変更する必要があるアプリケーションを使用する場合は、文デリミタとして 2 つのセミコロン (;;) を使うか、複数の文字を使ったデリミタが許可されないシステムであれば疑問符 (?) が適切です。
プロシージャ内の各文はセミコロンで終わります。最後の文はセミコロンがなくてもかまいませんが、各文の後ろにはセミコロンを付けることを習慣にしてください。
CREATE PROCEDURE 文は本体である複合文と、RESULT 指定の両方を含みます。キーワード BEGIN または END の後と、RESULT 句の後には、セミコロンは必要ありません。
プロシージャがテーブルを参照する場合は、テーブル名に必ず所有者 (作成者) の名前をプレフィクスとして付けてください。
プロシージャがテーブルを参照するときは、プロシージャ作成者のロールメンバーシップを使い、所有者の名前は指定しません。たとえば、user_1 が作成したプロシージャが Table_B を参照し、Table_B の所有者の名前を指定しないとします。この場合、Table_B が user_1 によって作成されたか、user_1 が Table_B の所有者であるロールの (直接的または間接的な) メンバーでなければなりません。どちらの条件も満たされない場合は、プロシージャが呼び出されると、「テーブルが見つかりません。」というメッセージが表示されます。
テーブルが見つかりません。
テーブルの指定に相関名を使うと、テーブルの長い、完全に修飾された名前を入力しないですみます。相関名の詳細については、FROM 句を参照してください。
プロシージャは、日付と時刻を文字列としてデータベースに送ります。この文字列は date_order データベースオプションの現在の設定に従って変換されます。異なる接続はこのオプションを異なる値に設定することもあるので、文字列が間違った日付に変換されたり、まったく変換できなかったりすることがあります。
プロシージャで日付文字列を使用するときには、あいまいでない yyyy-mm-dd か yyyy/mm/dd の日付形式を使用します。date_order データベースオプションの設定に関係なく、サーバはこれらの文字列を日付として正しく解釈します。
入力引数を検証する 1 つの方法は、MESSAGE 文を使って Interactive SQL の [メッセージ] タブにパラメータ値を表示することです。たとえば、次に示すプロシージャは、入力パラメータの var の値を表示します。
CREATE PROCEDURE message_test( IN var char(40) ) BEGIN MESSAGE var TO CLIENT; END;
デバッガを使用して、プロシージャの入力引数が正常に渡されたことを確認することもできます。