sqlparameter - пустое значение останавливает выполнение хранимой процедуры
Контекст:
Используя sqlCommand, я выполняю хранимую процедуру, которая принимает ряд параметров. Все эти sqlParameters имеют тип string. Команда выполняется успешно, когда значения всех параметров заполнены хотя бы одним символом.
Проблема: Когда я удаляю текст из значения и заменяю его двойной кавычкой (""). Хранимая процедура на сервере не выполняется.
Я пытался изо всех сил стрелять в это, но никаких ошибок не выдается, указатель просто прогрессирует на своем веселом пути!!! #Смущенный
Код:
Вот код многократного использования, который у меня есть для создания sqlParameter:
Try
With param
.ParameterName = name
'set value
If TypeOf value Is String And value.ToString.Trim.Length = 0 Then
.Value = DBNull.Value
ElseIf TypeOf value Is Integer And value.ToString.Trim.Length = 0 Then
.Value = DBNull.Value
Else
.Value = value
End If
.DbType = type
.Direction = direction
.IsNullable = isNullable
If sourceColumn.Length > 0 Then
.SourceColumn = sourceColumn
End If
End With
Catch : param = Nothing : End Try
Вот код многократного использования, который я выполнил хранимую процедуру:
Try
If (_Connection Is Nothing) Then
Throw New Exception("No connection string found.")
End If
If (_commandText Is Nothing) Then
Throw New Exception("No SQL command text found.")
End If
_Commander = New SqlCommand(_commandText, _Connection)
With _Commander
.CommandType = _commandType
'.Parameters.AddRange(_parameters.ToArray)
.Parameters.Add(New SqlParameter("nameOfPage", "A"))
.Parameters.Add(New SqlParameter("nameOfRoutine", "B"))
.Parameters.Add(New SqlParameter("message", "C"))
.Parameters.Add(New SqlParameter("extraInformation", ""))
.Connection.Open()
.BeginExecuteNonQuery()
End With
Catch ex As SqlException
Throw New Exception(_message_Commamder_FailedToExecute & ex.Message)
Catch ex As Exception
Throw New Exception(_message_Commamder_FailedToExecute & ex.Message)
Finally
_Commander.Connection.Close()
_Commander = Nothing
End Try
*** Обратите внимание, что последний параметр имеет значение двойной кавычки.
Дополнительная информация:
Я запустил SQL Profiler при попытке выполнить хранимую процедуру из кода. Профилировщик не установил соединение с базой данных, и теперь я знаю, что проблема не в стороне SQL Server.