Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.
この項では、プロシージャー、トリガー、ユーザー定義関数、バッチを作成するときのヒントについて説明します。
Interactive SQL または Sybase Central でプロシージャーを作成するときには、文デリミターの変更は必要ありません。他のブラウズツールを使う場合には、文デリミターをセミコロンから他の文字に変更する必要がある場合があります。
プロシージャー内の各文はセミコロンで終わります。ブラウズするアプリケーションが 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;
デバッガーを使用して、プロシージャーの入力引数が正常に渡されたことを確認することもできます。