0

私はかなり複雑な .NET WinForms プログラムを完全に統合された SQL Server の sproc と関数のセットに変換する作業を行っています。

私はまったく制御できないサードパーティのデータベースに取り組んでいます。

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

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

ただし、SSMS では、関数を調べると、入力パラメーターのデータ型はnumeric(18,0). タイプに基づいてそれを想定していると思いますが、それはSystem.Decimal間違っています。最終結果は、関数を手動で (SSMS で) 呼び出そうとすると、次のエラーが発生することです。

数値をデータ型数値に変換中に算術オーバーフロー エラーが発生しました。

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

4

1 に答える 1

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)
于 2012-05-07T14:47:45.707 に答える