我有一个存储过程,它返回一个 varchar(160) 作为存储过程的输出参数。
当我使用 ExecuteNonQuery 时一切正常,我总是能取回预期值。
但是,一旦我切换到使用 BeginExecuteNonQuery,我会得到一个空值作为输出。
我正在使用 connString +“异步处理=true;” 在这两种情况下。
可悲的是,在我的情况下,BeginExecuteNonQuery 大约快 1.5 倍......但我真的需要输出参数。
谢谢!
编辑:这就是我处理 BeginExecuteNonQuery 回调的方式(我正在使用.net 4.0 ...)
Dim resp as String=""
cmd.BeginExecuteNonQuery(Sub(result As IAsyncResult)
Dim c As SqlCommand = Nothing
Try
c = CType(result.AsyncState, SqlCommand)
c.EndExecuteNonQuery(result)
**resp = CStr(c.Parameters("@response").Value)**
Catch ex As Exception
WriteLog("ERR - LogRequest - " & ex.Message)
Finally
c.Connection.Close()
c.Dispose()
End Try
End Sub, cmd)