Вы на правильном пути. Параметры строки запроса - это просто строки. Таким образом, вы должны выбрать строковый представитель для NULL, который не будет конфликтовать ни с одним из фактических значений строки, которые вы будете отправлять. Вы можете использовать пустую строку, «ноль» или «специальный нулевой флаг Томаса»; это не важно В параметре строки запроса отсутствует «официальное» представление NULL.
Обновление : нет, я не думаю, что хранимая процедура - это место для обработки этого перевода. Причина в том, что тот факт, что вы преобразуете свое строковое представление нуля в параметре строки запроса в «реальный» ноль, - это то, что вам нужно сделать из-за ограничений того, что вы можете поместить в параметр строки запроса. Выполнение этого преобразования в хранимой процедуре сделало бы процедуру, в некоторой степени, «осведомленной» о строке запроса, и это не кажется правильным. Вместо этого я сделал бы это в разметке aspx, которая, как ожидают, будет осведомлена о сети. Вот исходный пример (непроверенный, так что исправьте мои синтаксические ошибки или, лучше, измените на string.Format () или параметризованный запрос ...
Изменение:
QueryToJSON(conn, "execute WebGetEmployeesPlanned'"
+Request.QueryString("customercode")+"',
'"+Request.QueryString("lang")+"',
'"+Request.QueryString("date")+"'").flush
до:
QueryToJSON(conn, "execute WebGetEmployeesPlanned "
+ (string.IsNullOrEmpty(Request.QueryString("customercode")) ?
"null, '"
:
"'" + Request.QueryString("customercode") + "','")
+Request.QueryString("customercode")+"',
'"+Request.QueryString("lang")+"',
'"+Request.QueryString("date")+"'").flush