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

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

ストアドプロシージャ作成ウィザード

簡単なストアドプロシージャなら、Enterprise Managerのウィザードで作れます。既存のにテーブルにレコード(行)を挿入する処理を作る手順を例に、ウィザードの操作を紹介しておきます。


- ウィザードの操作手順 -

(1)Enterprise Managerの左ペイン(サーバー、データベースなどがツリー表示されているウィンドウ)で稼働しているサーバー※4を選択する

※4 稼働しているサーバー以下の階層にあるオブジェクト(データベース、テーブルなど)ならどれを選択していても構いません

(2)メニューから「ツール」→「ウィザード」を選択する

ウィザードの選択ダイアログがオープンします。


(3)リストから「データベース」→「ストアドプロシージャ作成ウィザード」を選択して[OK]をクリックする

ストアドプロシージャ作成ウィザードが起動します。


(4)[次へ]をクリックする

データベースの選択画面になります。

(5)ストアドプロシージャを作成するデータベースを選択する

ここでは“db1001ya”を選択します。


(6)[次へ]をクリックする

「ストアドプロシージャの選択」画面になります。
ここでは、「商品_dmy」にレコードを挿入する処理を作ってみます。


(7)「テーブル名:商品_dmy」の「挿入」チェックボックスをONにする


(8)[次へ]をクリックする

完了画面になります。



- ソースの表示 -

ここで一応ストアドプロシージャは完成します。が、一体何がどのようになっているのか不明です。[編集]ボタンをクリックして内容を確かめてみましょう。「ストアドプロシージャ プロパティの編集」ダイアログがオープンします。


「名前」欄には“insert_商品_dmy_1”と表示されていますが、これはウィザードが付けた既定の名前なので、分かりやすい名前に変更できます。

その下のグリッドには、テーブル「商品_dmy」の各フィールドのプロパティが表示されています。「選択」欄のチェックをOFFにすると、ストアドプロシージャではそのフィールドの値を挿入しなくなります。

[SQLの編集]ボタンをクリックすると、ウィザードで作成したストアドプロシージャのSQL文が表示されます。



- ソースの編集 -

ここでSQLを修正して処理の内容を変更できます。変更後のSQLが間違っていないかどうかは、[解析]ボタンをクリックして調べられます。間違っていなければ「このTSQLスクリプトは正常に解析されました」というメッセージが表示されます。“TSQL”とはTransact-SQLのことです。

間違っていた場合には間違っている箇所と内容が表示されるので、それを目安にSQLを修正します。但し、ここで調べられるのはTransact-SQLの文法だけです。文法が正しくても処理内容が論理的に間違っている場合はエラーとならないので注意しましょう。

完成したら[OK]をクリックし、先ほどの完成画面(8)へ戻ります。[完了]ボタンをクリックすればストアドプロシージャは完成です。



- 引数付きプロシージャ -

生成されたストアドプロシージャのソースを見ておきましょう。リスト1のようになっています。

データベース名やプロシージャ名を囲んでいる[ ]は省略可能です。プロシージャ名に次ぐ( )内の@付きの名前は、プロシージャの引数(パラメータ)です。引数付きのストアドプロシージャについては、回を追って紹介します。

SQLは、INSERT INTO命令を使って1レコード分のフィールドを設定し、レコードを挿入しているだけです。

このストアドプロシージャを実行するには、以下のように引数を指定しなければなりません。

  EXECUTE insert_商品_dmy_1 90801, ラーメン丼セット, 2400, 1800, 3


- ウィザードは初心者向け -

ウィザードでは、例に挙げたレコードの挿入の他にレコードの削除と更新を行うストアドプロシージャが作成できます。が、ここで示したように基本的なSQLをベースとしたものであって、複雑な処理は作れません。

複雑な処理を作りたい場合は、ウィザードで基本形を作っておいてからSQLを編集する必要があります。INSERTやDELETEなどの基本命令の書式を忘れた場合には役に立つかもしれませんが、SQLをよくわかっている人なら、わざわざウィザードでストアドプロシージャを作成するのはかえって手間です。

実は私も、このコラムを執筆するためにはじめてウィザードでストアドプロシージャを作りました。というか、これまですべてテキストエディタでソースを書いてクエリアナライザや簡単なアプリケーションでSQLを発行する──という形で作成してきたので、ウィザードがあること自体を知りませんでした(反省(^^;ゞ)。

いずれにせよ、ウィザードは初歩の練習・確認用としては便利ですが、実務レベルではあまり多用する機能ではないと思います。

リスト1:
ウィザードで作成されたストアドプロシージャのソース
USE [db1001ya]
GO
CREATE PROCEDURE [insert_商品_dmy_1]
  (@商品ID_1    [int],
   @品名_2      [nvarchar](30),
   @販売単価_3  [money],
   @仕入単価_4  [money],
   @仕入先ID_5  [int])
AS INSERT INTO [db1001ya].[dbo].[商品_dmy]
   ( [商品ID],
   [品名],
   [販売単価],
   [仕入単価],
   [仕入先ID])
VALUES 
  ( @商品ID_1,
    @品名_2,
    @販売単価_3,
    @仕入単価_4,
    @仕入先ID_5)


あとがき

ストアドプロシージャの基礎を紹介してきました。ストアドプロシージャは、うまく使いこなすとデータベース・プログラミングの効率化に役立ちます。単純に捉えればサーバー側で発行するSQLなのですが、関数を使って汎用的で複雑な処理を作成できます。

次回以降、ストアドプロシージャの作成と運用に関する様々な情報を紹介していこうと思います。


Downloadサンプルファイル (LZH形式 0.77KB)



トップページ
ストアドプロシージャの基本
ストアドプロシージャの作成と削除
ストアドプロシージャ向きの処理
ストアドプロシージャ作成ウィザード
ウィザードの操作手順
ソースの表示
ソースの編集
引数付きプロシージャ
ウィザードは初心者向け
あとがき
Copyright © MESCIUS inc. All rights reserved.