この項では、プロシージャを作成するためのヒントをいくつか説明します。
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; |
デバッガを使用して、プロシージャの入力引数が正常に渡されたことを確認することもできます。レッスン 2:ストアド・プロシージャのデバッグを参照してください。
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |