2012-05-07 10 views
0

かなり複雑な.NET WinFormsプログラムを、完全に統合されたsprocsと関数のSQL Serverセットに変換しようとしています。SQL CLRインテグレーション - ファンクションパラメータタイプの定義

私はがないを持っているサードパーティのデータベースで作業しています。

このデータベース全体で使用される一意の識別子はすべてnumeric(21)です。それが良い考えかどうかは関係ありません...私はその制約の中で作業しなければなりません。

これらの値を使用する関数をコーディングする方法がわかりません。これまでは、System.Decimalを使用しています。これは、コードが.dll内から呼び出されたときに正常に動作するようです。

ただし、SSMSでは、いずれかの関数を検査すると、入力パラメータのデータ型はnumeric(18,0)になります。私はそれがSystem.Decimalタイプに基づいていると仮定していると仮定していますが、それは間違っています。そして、最終的な結果は、私が(SSMSで)手動で関数を呼び出すしようとすると、私は次のエラーを取得することです:

Arithmetic overflow error converting numeric to data type numeric.

奇妙なことは、私は関数を呼び出すときに呼び出しが失敗しないということです.dllの中から。 numeric(18,0)指定をどのように上書きできますか?

答えて

0

男、質問を投稿してから30秒後にグーグルが答えを見つけたら嫌です!

私は日本で見てきた、誓う...

とにかく、私は私の入力パラメータにSqlFacetを追加する必要がありました。これに

<Microsoft.SqlServer.Server.SqlProcedure()> 
Public Shared Sub Check(ByVal ID As Decimal) 

<Microsoft.SqlServer.Server.SqlProcedure()> _ 
Public Shared Sub Check(<SqlFacet(Precision:=21, Scale:=0)> ByVal ID As Decimal) 

私はこのから行ってきました