C#でデフォルトをSQLServerに渡そうとしています。
このコードはnullを渡します。デフォルトを渡す方法はありますか?
foreach (SqlParameter Parameter in command.Parameters)
{
if (Convert.ToString(Parameter.Value) == "")
{
Parameter.Value = DBNull.Value;
}
}
パラメータを追加しないか、パラメータを追加して値をnull
(ではなく DBNull.Value
)に設定してください。どちらも同じ効果があります。パラメータは渡されないため、デフォルトが使用されます。
SQL-Server(ストアドプロシージャ...)でパラメータのデフォルトを設定できます
(@parm varchar(5) = null)
AS
Begin...
そして、C#からパラメータをまったく渡さないでください。
これは別の種類の解決策です。ストアドプロシージャでパラメータのデフォルト値を検索し(文字通り、変数の宣言での割り当てのパターン検索)、見つかったデフォルト値を返すように見えます。つまり... c#アプリからこのプロシージャを呼び出して、すべてのデフォルト値を取得し、それらをローカルのC#変数に割り当ててから、他のプロシージャを呼び出すときにそれらを使用できます。
http://www.codeproject.com/Articles/12939/Figure-Out-the-Default-Values-of-Stored-Procedure
そして、これがテーブル自体のデフォルト値を見つける方法です:(戻り値から括弧を取り除く必要があるかもしれません)
SELECT COLUMN_DEFAULT, replace(replace(COLUMN_DEFAULT,'(',''),')','') as DefaultWithNoParenthesis
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'WHATEVER'
幸運を!