執筆者: インフラジスティックス・ジャパン株式会社 池原 大然

動作確認環境: Visual Studio 2010、.NET Framework 2.0、Windows 7 Ultimate 64 bit、SQL Server 2008 R2 Express Edition 64 bit


SQL Server 2008 R2 では T-SQL のストアド プロシージャによるプログラミングのほか、CLR 統合を用いてマネージ コード (VB) を利用し、Visual Studio 2010 を用いて開発することが可能です。また、CLR 統合機能で作成するストアド プロシージャにおいてコンテキスト接続を利用したデータ アクセスのサンプル コードは下記の通りです。

なお、CLR 統合機能の有効化、データベースへの接続や SQL Server への配置に関しては [VB] Visual Studio 2010 による SQL Server アプリケーション開発入門を参照してください。

1. Visual Studio 2010 を起動し、Visual VB SQL CLR データベース プロジェクトを作成し、AdventureWorks2008R2 に接続します。

図 1

図 2

図 3

図 4

2. プロジェクトにストアド プロシージャを "CodeRecipeSPDA_VB.vb" と名付けて追加します。

図 5

3. このストアド プロシージャでは SqlConnection, SqlCommand を利用し、コンテキスト接続を利用するため、"context connection=true" を設定します。

Visual Basic
Imports System 
Imports System.Data.SqlClient 
Imports System.Data.SqlTypes 
Imports Microsoft.SqlServer.Server 
 
Partial Public Class StoredProcedures 
    <Microsoft.SqlServer.Server.SqlProcedure()> _ 
    Public Shared Sub CodeRecipeSPDA_VB(ByVal regionName As SqlString) 
        Dim rowCount As Integer = 0 
        ' コネクションの作成 
        Using con As New SqlConnection("context connection=true") 
            con.Open() 
            ' SalesTerritory に該当リージョンが存在するか確認 
            Dim cmd As New SqlCommand("SELECT COUNT(*) FROM [Sales].[SalesTerritory] WHERE CountryRegionCode = @RegionCode", con) 
            cmd.Parameters.AddWithValue("@RegionCode", regionName) 
            rowCount = cmd.ExecuteScalar() 
 
            con.Close() 
        End Using 
 
        SqlContext.Pipe.Send( 
            String.Format("リージョン : {0} の結果は {1} 行でした。", 
            regionName.ToString(), rowCount)) 
    End Sub 
End Class 
 
 

4. [ビルド] – [CodeRecipe_SqlClrDataAccess_VB の配置] を選択し、サーバーに配備します。配備後、サーバー エクスプローラーにはストアド プロシージャが登録されています。

5. Test.sql スクリプト ファイルを開き、下記のテスト スクリプトを追記します。

exec CodeRecipeSPDA_VB 'US'
exec CodeRecipeSPDA_VB 'JP'

[デバッグ] – [デバッグなしで開始] を選択した場合の実行結果は下記の通りです。

選択されたスクリプトを プロジェクト スクリプト ファイル から実行しています。

リージョン : US の結果は 5 行でした。
リージョン : JP の結果は 0 行でした。
Column1
---------------------------------------------------------------------------------------------------------------------------------------------
To run your project, please edit the Test.sql file in your project. This file is located in the Test Scripts folder in the Solution Explorer.
該当する行はありません。
(1 行が返されました)
選択された プロジェクト スクリプト ファイル のスクリプトの実行が完了しました。

関連リンク


Code Recipe

ページのトップへ