
![]()
SQL CLRコーディング、最初の一歩
株式会社システムインテグレータ
石橋 潤一
2006/6/13
SQL CLRのデバッグに当たっては、通常のコードと変わらないインターフェイスが提供されています。ブレイクポイントによる実行の中断やステップ実行、変数の監視などを行うことができます(図5)。
![]() |
| 図5 SQL CLRのデバッグ画面(画像をクリックすると拡大します) |
図5ではブレイクポイントから1行進んだ所で止まっています。ステップ実行や変数の監視を利用することにより、プログラムの実行状況を随時把握できます。
ストアドプロシージャに続いて、ユーザー定義関数を作成してみましょう。ユーザー定義関数は、パラメータを受け取り、計算や各種操作を実行し、その結果を返すためのプログラムです。SQL CLRでは1つの値を返すスカラ値関数(SVF)と行セットを返すテーブル値関数(TVF)を扱うことができます。ここではサンプルとして、スカラ値関数を作成します。
まず、先ほどまで利用したプロジェクトに対し、ユーザー定義関数のファイルを追加します。「プロジェクト」メニュー内の「ユーザー定義関数の追加」を選択してファイルの追加を行います。
続いて、コーディングを行います。コードとしては、渡された日付文字列に対し、曜日を返す、という単純なものです(リスト5)。
using System; |
| リスト5 ユーザー定義関数の作成 |
リスト5では戻り値としてSqlString型を指定していますが、これはSystem.Data.SqlTypes名前空間で定義されたSQL Serverプログラミング向けのネイティブなデータ型(以下SQL Server CLRデータ型)です。SqlString型は.NETでのデータ型(以下CLRデータ型)としてString型に対応しています。
データベースへ格納する、またはデータベースからデータを取得する際のデータ型はパフォーマンスと安全性の観点から、SQL Server CLRデータ型でのプログラム作成が推奨されています。SQL Server CLRデータ型とCLRデータ型の対応については、MSDN2のドキュメント「SQL Serverデータ型と.NET Frameworkデータ型の対応」にて確認できます。
コーディング後、ビルドと配置を行い、Test.sqlより実行テストを行います。ユーザー定義関数は、SELECT文より呼び出すことが可能なので、リスト6のように記述します。
SELECT dbo.GetWeek('2006/06/04') AS DayOfWeek |
| リスト6 Test.sqlの書き換え |
実行結果はストアドプロシージャと同じく「出力」ウィンドウに表示されます(リスト7)。
DayOfWeek |
| リスト7 ユーザー定義関数の実行結果 |
以上のように、ユーザー定義関数も簡単に作成できます。ユーザー定義関数はSELECT文などから直接呼び出せるため、クエリとの親和性が非常に高く、SQL CLRでの実行結果をクエリ内で利用したい場合に大きな助けとなるでしょう。
ここまで、ストアドプロシージャとユーザー定義関数について簡単なサンプル作成を行いました。Visual Studio 2005を利用することによりSQL CLRの作成からSQL Serverへの配置、デバッグまで必要な作業をすべて行うことができます。その生産性は非常に高く、言語としてもC#やVB.NETを知っていれば新たに言語を覚える必要はありません。また、Visual Studioを利用することによってプロジェクトごとのコードの管理や履歴管理なども一元化されるため、プロジェクトの運用管理という面でも利点は大きいでしょう。
しかしながら、今回のサンプルに示したような単純なデータ処理であれば、Transact-SQLの優位性は揺らぎません。データを取り扱うための専用言語であるTransact-SQLの方が、より単純にパフォーマンスの高いコードを記述できます。開発者には、それぞれ利点欠点を見極めた使い分けが求められます。
◇
次回は、テーブル値関数の解説に加えて、SQL CLRを利用する動機ともいえる正規表現やほかのデータベース製品との接続などの確認を行う予定です。お楽しみに!
| 筆者プロフィール |
| 石橋潤一 株式会社システムインテグレータ勤務。Web+DBの業務アプリをメインに開発に携わる。@IT連載記事「SQL Server 2005 CTPレビュー」執筆のほか、著書に『DBマガジン別冊 SQL Server 2005徹底活用ガイド』(翔泳社刊/共著)、『ASP.NET+SQL Server ゼロからはじめるWebアプリケーション』(ソフトバンクパブリッシング刊/共著)。 |
| 3/3 |
| Index | |
| 連載:SQL Server 2005を使いこなそう(5) SQL CLRコーディング、最初の一歩 |
|
| Page
1 ・SQL CLRを有効にする ・Visual Studio 2005によるSQL CLRの作成 |
|
| Page 2 ・SQL CLRによるストアドプロシージャ作成 ・SQL CLRの配置と実行 |
|
| Page 3 ・SQL CLRのデバッグ ・SQL CLRによるユーザー定義関数の作成 ・まとめ |
|
| SQL Server 2005を使いこなそう |
TechTargetジャパン
- IBMが歴史を変える!? 新カテゴリの製品を発表 (2012/5/25)
IBMは新たな製品カテゴリとなる「PureSystems」を発表。DB2 10とビッグデータの関係、PureSytemsの斬新さはどこかに迫ります - クラウド時代のデータ処理を支える分散KVSの可能性 (2012/5/23)
現在、高速データ処理の主流はインメモリ型データ処理だが、別の方法として分散KVSが注目を集めている。今回は分散KVSについて話を聞いた - 複数の表からデータを取り出して表示させる(2) (2012/4/23)
前回はSQLの基本的な結合構文について説明しました。今回は、より複雑な自己結合や外部結合について説明します - SQL Server、OOWにIQ、盛りだくさんの4月 (2012/4/20)
オラクルオープンワールドが3年ぶりに東京で開催されたほか、SQL Server 2012が提供開始されるなど、今月は話題が盛りだくさんです
|
|
キャリアアップ
スポンサーからのお知らせ
- - PR -
イベントカレンダー
- - PR -

