中の技術日誌ブログ

C#とC++/CLIと
VBと.NETとWindowsで戯れる
 

目次

Blog 利用状況

ニュース

自己紹介

東京でソフトウェアエンジニアをやっています。
お仕事大募集中です。
記事執筆や、講師依頼とかでも何でもどうぞ(*^_^*)
似顔絵 MSMVPロゴ
MSMVP Visual C# Since 2004/04-2013/03

記事カテゴリ

書庫

日記カテゴリ

00-整理

01-MSMVP

CLR UDF(Common Language Runtime User-Defined Function)を作ってみよう!!!

CLR UDFを作ってみよう!!!

Visual Studioでクラスライブラリを作成します。


ここではCLRUDFTESTというプロジェクト名をつけます。


そのままでは不要なクラスが入り込んでしまうために、"すべてのファイルを表示します。"を選びます。


とりあえずAssembliInfo.cs, Resource.resx, Settings.settingsのすべてを削除します。(どれがよくないとかは調べていません。)


ハイ消えました。


次にソースです。

名前空間があると失敗するため、ここでは削除してあります。(いけるかどうかは調べないといけませんね。)
public staticなクラスを作るのですが、どこかで見たサンプルを元ねたにしてあります。まぁHello Worldはプログラムの基本ですね。(^^

ここまででVisual Studioでの作業は終了。
SQL Server Management Studioに移動します。


テスト用のデータベースを作成して、Programmability\Assemblyの上で右クリックして、New Assemblyを選択します。


アセンブリ追加画面が出ました。


ここにアセンブリのパスを入力しますが、今の段階では必ずVisual Studioのbinディレクトリからどこかにコピーしてください。
コピーしておかないとWindowsが抱えてしまうようです。

SQL Serverを停止させてもファイルを削除できなくなってしまいます。


まだCLR UDFの作成はGUI上で出来ないのでSQLの発行です。

create function Hello() returns nvarchar(MAX) as external name [CLRUDFTEST].[Test].[HelloUDF]

前半部分がSQL Server上で利用する場合の宣言

後半部分がどのメソッドを指すかという意味です。

後半部分は[CLRUDFTEST].[Test].[HelloUDF]と3段指定されていますが、[アセンブリ名].[クラス名].[スタティックメソッド名]となっているようです。

アセンブリ名はアセンブリファイル名ではないようで、プロジェクト名で指定したアセンブリの名前が採用されているようです。

SQL Server Management Studio上で表示されるアセンブリ名と同一になりますのでそこをチェックしてください。

#こっそりMAXキーワード使ってみたりして


ハイ実行です。

ここは普通の呼び出しと一緒です。

どうです?いい感じじゃないですか。

 

もうちょっとCLR UDFで遊びましょう。

投稿日時 : 2004年10月26日 23:37

コメントを追加

No comments posted yet.
タイトル
名前
URL
コメント