SQL Server 改元和暦対応/.NET和暦レジストリ取得クラスで関数を作る

もうすぐ改元ですね、改元対応の計画を立ててみえると思います。
大変なのは和暦判断です。

Windowsの和暦レジストリから、一覧取得するクラスを使ってDB側で和暦置換する仕組みを公開します。

今回使用するのはSQL CLRの仕組みです。

※参考:SQL CLRの使い方(VS2017/SQL Server 2017) https://ssit.jp/tech-013

■公開ソースの結果(下のテーブル【dbo.Table_1】を和暦置換する)

■和暦のソースとなるレジストリ

■使用までの手順
①Visual StudioでDLLを作成
②SQL Serverにアセンブリ登録
③SQL Serverの関数登録
後は使用するだけです!

■手順1:①Visual StudioでDLL作成
Visual StudioでSQL CLRを使用する方法は:https://ssit.jp/tech-013

プロジェクト設定値【SqlClrWarekiで設定してね】

■手順2:②SQL Serverにアセンブリ登録

ALTER DATABASE TEST SET TRUSTWORTHY ON;

CREATE ASSEMBLY SqlClrWareki
FROM 'C:\Temp\SqlClrWareki.dll'
WITH PERMISSION_SET = UNSAFE;

※レジストリアクセスしますので、PERMISSON_SET=UNSAFEで。
※ファイルは使用する場所に配置してね

■手順3:③SQL Serverの関数登録

CREATE FUNCTION WLargeFormat(@WarekiDate DATETIME)
RETURNS NVARCHAR(MAX)
AS EXTERNAL NAME SqlClrWareki.Wareki.WLargeFormat;

CREATE FUNCTION WShortFormat(@WarekiDate DATETIME)
RETURNS NVARCHAR(MAX)
AS EXTERNAL NAME SqlClrWareki.Wareki.WShortFormat;

今回は2つの関数を用意してます。
【平成〇〇年〇月〇日】と【H〇/〇/〇】が取得できます。

■SQL CLR+和暦取得クラスのソース

ソースが見にくいのでこちらのブログで無料公開中


いいなと思ったら応援しよう!