連載
» 2008年01月21日 00時00分 UPDATE

さらっと覚えるSQL&T-SQL入門(11):ストアドプロシージャの花形“カーソル”を使おう (3/3)

[石橋潤一,株式会社システムインテグレータ]
前のページへ 1|2|3       

カーソルを利用したストアドプロシージャの作成

 カーソルの構文に一通り触れたところで、早速カーソルを利用したストアドプロシージャを作成しましょう。今回も利用するデータベースはSQL Server 2005のサンプルデータベースであるAdventureWorksです。

 サンプルとして作成するストアドプロシージャは非常に単純な内容です。従業員データが格納されたEmployeeテーブルを利用し、渡されたマネージャコードに関連付けられた従業員とその職種の一覧を出力します。

CREATE procedure sp_sample @MngID int as
--変数リストの宣言
DECLARE @FirstName nvarchar(50)
DECLARE @LastName nvarchar(50)
DECLARE @Title nvarchar(50)
 
 
--カーソルの宣言
DECLARE EmpCur cursor FOR
SELECT cnt.FirstName,cnt.LastName,emp.Title
 FROM HumanResources.Employee as emp INNER JOIN Person.Contact AS cnt
 ON emp.ContactID = cnt.ContactID  WHERE emp.ManagerID = @MngID
 
--カーソルを開く
OPEN EmpCur
 
--FETCH(行の取り出し)
FETCH NEXT FROM EmpCur INTO @FirstName,@LastName,@Title
 
--LOOP
 
WHILE (@@fetch_status = 0)
BEGIN
    --変数リストの値を出力
    PRINT @FirstName + ' ' + @LastName + ' ' + @Title
    --FETCH(行の取り出し)
    FETCH NEXT FROM EmpCur INTO @FirstName,@LastName,@Title
end
 
--カーソルを閉じる
CLOSE EmpCur
DEALLOCATE EmpCur
 
RETURN

 ストアドプロシージャを作成できたら、早速実行してみましょう。ストアドプロシージャの実行にはEXEC句を利用します。

EXEC sp_sample 109
 
実行結果
David Bradley Marketing Manager
Terri Duffy Vice President of Engineering
Jean Trenary Information Services Manager
Laura Norman Chief Financial Officer
James Hamilton Vice President of Production
Brian Welcker Vice President of Sales

 ストアドプロシージャに対して渡されたパラメータに基づき、カーソルによるデータの取り出しが行われていることを確認できました。FETCH文と変数リストの関係に注意しながらコーディングを進めると、より理解が進むはずです。

まとめ

 今回はストアドプロシージャの花形ともいえるカーソルを取り上げました。使用したサンプルは非常に単純な処理を行っていますが、カーソルの利用範囲は非常に広く、さまざまな処理に応用することが可能です。


 次回は1次テーブルなどを利用した、より高度なストアドプロシージャの作成を行う予定です。お楽しみに!(次回へ続く)

筆者プロフィール

石橋潤一
株式会社システムインテグレータ勤務。Web+DBの業務アプリをメインに開発に携わる。@IT連載記事「SQL Server 2005を使いこなそう」「SQL Server 2005 CTPレビュー」執筆のほか、著書に『DBマガジン別冊 SQL Server 2005徹底活用ガイド』(翔泳社刊/共著)、『ASP.NET+SQL Server ゼロからはじめるWebアプリケーション』(ソフトバンクパブリッシング刊/共著)。



前のページへ 1|2|3       

Copyright© 2017 ITmedia, Inc. All Rights Reserved.

@IT Special

- PR -

TechTargetジャパン

この記事に関連するホワイトペーパー

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。