Этот запрос INSERT отлично работает в VS20012, SQL Server 2008 R2. Но когда я пытаюсь выполнить его из кода VB позади, я получаю ошибку DBnull Conversion в строке, пытающейся присвоить значение переменной после выполнения.Назначение идентификатора переменной с параметром OUTPUT
Вставка также не удалась, но также не вызывает ошибку Try Catch. Даже после закрытия соединения. Очень странное поведение.
sqSql = "INSERT INTO tblLogging (vein, num, descripBaseFileName, " & _
" csvBaseFileName, baseActive, diagActive) " & _
" OUTPUT INSERTED.keyID" & _
" VALUES (@vein, @num, @cnfFil, @csvFil, 'True', 'False')"
command3.Parameters.AddWithValue("@vein", vein1)
command3.Parameters.AddWithValue("@num", veinNum)
command3.Parameters.AddWithValue("@cnfFil", cnfFil)
command3.Parameters.AddWithValue("@csvFil", csvFil)
command3.Parameters.Add("@keyID", SqlDbType.Int)
command3.Parameters("@keyID").Direction = ParameterDirection.Output
Try
command3.CommandText = sqSql
oCnn.Open()
command3.ExecuteScalar()
oCnn.Close()
ОШИБКИ здесь:
**Dim retkeyID As Integer = command3.Parameters("@keyID").Value**
Catch ex As Exception
Throw ex
End Try
Любые идеи о том, что я делаю неправильно было бы весьма признателен.
Вы должны проверить [Можно ли прекратить использование AddWithValue() уже?] (http://blogs.msmvps.com/jcoehoorn/blog/2014/05/12/can-we-stop-using-addwithvalue-already/) и прекратите использовать '.AddWithValue()' - это может привести к неожиданным и неожиданным результаты ... –