Так вот в чем дело. В нашей базе данных мы упаковываем большинство наших операций чтения (т.е. операторов выбора) в табличные функции в целях безопасности и модульности. Итак, у меня есть TVF, который определяет один или несколько необязательных параметров.
Я считаю, что наличие TVF с параметрами по умолчанию требует использования ключевого слова default
при вызове TVF следующим образом:
select * from fn_SampleTVF(123, DEFAULT, DEFAULT)
Это нормально, все работает в анализаторе запросов, но когда приходит время сделать этот запрос из ADO.NET, я не уверен, как создать параметр sql, который фактически помещает слово default
в визуализированный SQL.
У меня сейчас что-то примерно такое:
String qry = "select * from fn_SampleTVF(@requiredParam, @optionalParam)";
DbCommand command = this.CreateStoreCommand(qry, CommandType.Text);
SqlParameter someRequiredParam = new SqlParameter("@requiredParam", SqlDbType.Int);
someRequiredParam.Value = 123;
command.Parameters.Add(someRequiredParam);
SqlParameter optionalParam = new SqlParameter("@optionalParam", SqlDbType.Int);
optionalParam.Value = >>>> WTF? <<<<
command.Parameters.Add(optionalParam);
Итак, у кого-нибудь есть идеи, как передать default
в TVF?