データベース千夜一夜第27回

ストアドプロシージャ(1)~ストアドプロシージャの基礎 長谷川裕行
有限会社 手國堂

ストアドプロージャの基本

ストアドプロシージャとはどのようなものかを説明した上で、簡単なストアドプロシージャを作って実行してみましょう。


- ストアドプロシージャとは? -

データベース管理システム(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を省略してストアドプロシージャ名を入力するだけでも実行できます。





トップページ
ストアドプロージャの基本
ストアドプロシージャとは?
最もシンプルなストアドプロシージャ
ストアドプロシージャの実行
ストアドプロシージャの作成と削除
ストアドプロシージャ向きの処理
ストアドプロシージャ作成ウィザード
あとがき
Copyright © MESCIUS inc. All rights reserved.