(1/3)アプリケーション開発でデータベースを利用する新人プログラマに向けて、SQLおよびT-SQLを短期間で理解できるよう、開発現場ですぐに必要となる内容を中心に解説する。});この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。▼まとめ前々回「Transact-SQLでストアドプロシージャを作成する」、前回「IF文による条件分岐でSQLを動的に変化させる」と続けてストアドプロシージャを取り上げてきました。今回も同じくストアドプロシージャを取り上げます。題材とするのは「カーソル」です。カーソルの概念SQLは複数行のデータを一括して処理することに適しています。1000行のデータを一括して取得したり、一括して更新を行うなど大量のデータに対する一括した処理を行えます。一括したデータ処理ではなく、1行ずつデータを読み取り、処理を行いたい場合があります。処理内容が複雑で一括した処理を行えず、1行ずつ条件を判断して処理を行う必要があるような場合です。このような場合にカーソルを利用します。カーソルはSELECT文の実行結果(結果セット)を仮想的な作業領域として扱います。カーソルはこの作業領域に対してループ処理を実行し、1行ずつデータを取り出し、処理を行います。BasicやJavaといった言語でもこのような結果セットに対する順次処理を可能としていますが、カーソルを利用することによりストアドプロシージャ内で目的の処理を完結させることが可能です。カーソルでは、現在の処理行を示すために「ポインタ」という概念を持っています。ポインタは現在の処理位置を値として持っています。このポインタの位置をループ処理の中で1つずつ進めることによって、1行ずつデータを取り出す、という処理が実現されています。カーソルとポインタの概念カーソルの使い方それでは、まずはカーソルの文法を確認していきましょう。カーソルを利用するためには次の手順が必要となります。カーソルの宣言カーソルを開く1行ごとにデータを取り出すカーソルを閉じるそれぞれの手順には専用の構文が用意されています。カーソルの宣言カーソルの利用に当たって最初に行うことは、カーソルの宣言です。CURSOR」文を利用し、処理対象の結果セットを得るためのSELECT文を定義します。構文は次のようになります。[SELECT文]カーソルを開くカーソルを利用するためには、カーソルの宣言による定義に従いカーソルを開く必要があります。カーソルを開くと、定義されたSELECT文が実行され、クエリの結果セットに対してカーソルがアクセスできるようになります。カーソルを開くには、OPEN文を利用します。[カーソル名]1行ごとにデータを取り出す続いて開いたカーソルから、1行ごとにデータを取り出します。カーソルからデータを取り出すためには、次のような作業が必要となります。「LOOP」文または「WHILE」文を使って、ループ処理を実行するループ処理の中で「FETCH」文を実行し、カーソルから1行取り出す最後の行を取り出したらループ処理を終了するこの中でメインとなる処理はFETCH文の実行によるデータの取り出しです。FECTH文の構文から確認しましょう。[変数リスト]FETCH文ではデータを取り出すカーソル名と、取り出したデータを格納するための変数リストを指定します。変数リストは、SELECT文で取り出される列の数と同じである必要があります。CURSORにて宣言した場合、3つの変数を指定します。FETCH文によって取り出されたデータはこの変数リストに代入されることによって、データとして扱えるようになります。メールマガジンをご購読ください。申し込みページへITmediaはアイティメディア株式会社の登録商標です。