ストアドプロシージャとはどのようなものかを説明した上で、簡単なストアドプロシージャを作って実行してみましょう。
- ストアドプロシージャとは? -
データベース管理システム(DBMS)は、単に複数のテーブルを管理しているだけではありません。既に紹介してきたように、テーブル同士の関連付けを明確に規定するダイアグラム(関連図)やSQLによって組み立てたクエリ(問い合わせの構造)をデータセット(行の集合)として返すビューなど、データベースを効率的に扱う機能が用意されています。
その中でも、SQLを使った様々な処理をプログラムとして保存・管理するストアドプロシージャ(stored procedure)は、効率的なアプリケーション開発に役立つ便利で高度な機能です。ストアドプロシージャは、文字通りデータベース内に保存されたプロシージャ(一定の処理を行う短いプログラム単位)で、ユーザーが自由に作成できます。
もちろん、エンドユーザーが好き勝手に作って保存できる訳ではありません。ストアドプロシージャはテーブル、ダイアグラム、ビューなどと同じデータベースの構成要素(SQL Serverではオブジェクトとして管理されます)なので、データベース管理者の許可なしには作成・保存できません。
- 最もシンプルなストアドプロシージャ -
ここで、簡単なストアドプロシージャを作成して実行する例を紹介しておきましょう。
Create Procedure GetDbOutline
As
SELECT
'データベース"db1001ya"は、商品の受注と在庫数の管理を行います。'
As Result
上記のソースをクエリアナライザに入力して実行※1すると「コマンドは正常に処理されました」というメッセージが表示されます。これで、データベースに“GetDbOutline”という名前のストアドプロシージャが作成されました。
クエリアナライザまたはEnterprise Managerでデータベース“Db1001ya”の「ストアドプロシージャ」を一覧すれば、“GetDbOutline”という名前のストアドプロシージャが表示されているはずです。
もし表示されていなければ、「ストアドプロシージャ」の項目を選択してメニューから「操作」→「最新の情報に更新」を選びます。
※1 対象データベースで“db1001ya”を選択してから実行してください。詳しくは以下の《注意》を参照のこと
《注意》
クエリアナライザで操作対象のデータベースを間違って選択してしまうと、ストアドプロシージャは違うデータベースに対して登録されてしまいます。実行する前にデータベースを確認しましょう。
Create Procedure命令の前にUse命令を使って
Use <データベース名>
とすれば、登録対象のデータベースを明示的に指定できます。この場合なら
Use db1001ya
としておきます。 |
- ストアドプロシージャの実行 -
このストアドプロシージャは、“Result”というフィールドに「データベース"db1001ya"は、商品の受注と在庫数の管理を行います。」という文字列を表示するだけの単純なものです。
ストアドプロシージャはEXECUTE命令で実行します。これもまたSQL文です。
EXECUTE <ストアドプロシージャ名>
上記の“GetDbOutline”を実行するには、クエリアナライザで以下のように入力します。
EXECUTE GetDbOutline
これを実行すれば、“Result”というフィールドに先に掲げた文字列が表示されます。クエリアナライザでは、EXECUTEを省略してストアドプロシージャ名を入力するだけでも実行できます。
|
|
|