2012-03-21 15 views
0

これはかなり簡単な質問ですが、「ベストプラクティス」の答えを探しています。 C#.NetのコールをOracleストアドプロシージャに設定しています。ストアドプロシージャは、すべてのNUMBER型の引数を受け入れるように設定されています。 Oracleではこれらの値をNULLに設定できるため、現在のストアド・プロシージャはIS NOT NULLをチェックしています。かなり簡単。問題は、.NETコードでフィールドをDBNull.Valueに設定できないため、代わりにInt32.MinValueが使用されることです。この不一致により、ストアドプロシージャチェックの問題が発生しています。私はストアドプロシージャの0をチェックするよう開発者に依頼しましたが、これに対処するより良い方法があるのだろうかと疑問に思っていますか?最小値の概念がOracleに存在しないため、NULL0の両方をチェックする必要があるようです。これはこれを扱う最善の方法ですか? ありがとう!Oracleストアドプロシージャの実行時にInt32.MinValueとNULLを処理する

答えて

1

.Netコードでは、intフィールドをDBNull.Valueに設定できないため、代わりにInt32.MinValueが使用されるという問題があります。

しないでください。代わりにNullable<int>(別名int?)を使用してください。にはnull値があります。

ここではあなたはこれをやっていますが、無効を表すためにマジック値を使う必要はありません。

関連する問題