SQL Serverに出力パラメータpfタイプnumeric(18,0)
を持つストアドプロシージャがあります。 C#1からIはSqlDbType.Decimal
とSqlParameter
を作成し、私はここでは0C#からストアドプロシージャにパラメータを渡す:数値(18、0)に使用するSQLDbType
に18とスケールに精密に設定私のコードである:
queryParameters[2] = new SqlParameter("@Id", SqlDbType.Decimal);
queryParameters[2].Precision = 18; // # digits
queryParameters[2].Scale = 0; // # decimals
queryParameters[2].Direction = ParameterDirection.Output;
ストアドプロシージャが正常に実行され、正しく出力パラメータを返しているが、これをC#の長い変数に解析すると、次のようになります。
これは変換できません。
SqlParameter
のタイプをSqlDbType.Bigint
に変更すると動作します。
私はそれをSqlDbType.BigInt
として渡すことで正しいと思いますか?または、それをSqlDbType.Decimal
として渡し、longの代わりに10進のC#変数を使用する方が良いでしょうか?
SqlDbType.Decimal
としてそれを渡した後、以下のことにも取り組んでいる。
decimal id = (decimal)queryParameters[2].Value;
だから何なアプローチが最善のこの数は小数なし整数であることを考慮に入れていますか?
私は同意します。ありがとう。 – user1624552