我有一個很大的存儲過程,我運行。最後,它應該選擇一個單一的值來說明它的成功與否,所以我運行查詢爲ExecuteScalar和SqlDataAdapter.Fill對於相同的查詢行爲不同
Dim Command As New SqlCommand(SqlString, Conn)
Return Command.ExecuteScalar()
哪個工作。但是,我的存儲過程中有一個錯誤。我知道它會導致錯誤,因爲存儲過程中的邏輯會回滾事務,並且在調用Execute Scalar
之後,我的事務計數降至0,並且我的數據沒有更改。但是沒有生成SQL異常。
奇怪的部分是,我更改了代碼以獲取SP中的所有結果集,以查看是否可以獲取更多信息。於是我打電話給同一個SP這樣的,
Dim DAObj As SqlDataAdapter = New SqlDataAdapter
Dim CommandObj As SqlCommand = New SqlCommand(SQLString, Conn)
DAObj.SelectCommand = CommandObj
Dim DS As New DataSet()
DAObj.Fill(DS)
當我像以前一樣運行此,具有完全相同的SQL,執行完全相同的存儲過程,這一次我得到,因爲我嵌套SP調用一個SQL異常缺少必需的參數。
那麼可能會導致這種情況?爲什麼會以一種方式運行它會產生錯誤,另一種方式會產生錯誤,但不會報告它?目標上的差異,還是ADO.Net中某種模糊的錯誤?
可能的重複[爲什麼SqlCommand.ExecuteNonQuery拋出的SqlException包含所有PRINTs爲錯誤?](http://stackoverflow.com/questions/2178164/why-does-a-sqlexception-thrown-by-sqlcommand -executenonquery-contain-all-the-prin) – gbn
@gbn,它的問題絕對不是同一個問題,但它可能的兩個問題都有相關的原因。 – Kratz
同樣的原因,是的,錯誤和內部處理。 – gbn