Interessantes Verhalten wurde von mir vor kurzem bemerkt.Gibt ExecuteScalar sofort nach SELECT zurück?
Wenn MS SQL gespeichert-Prozedur, die lief mit SqlCommand.ExecuteScalar(), meine Anwendung scheint auf alle SQL-Fehler oder Drucke völlig ahnungslos zu sein, die erscheinen, nachdem SELECT erfolgt.
Die wahrscheinlichste Erklärung ist, dass die Ablaufsteuerung C# unmittelbar nach dem Erscheinen eines SELECT-Ergebnisses übergeben wird, ohne dass die gespeicherte Prozedur beendet werden muss (obwohl die gespeicherte Prozedur die Ausführung still unterhalb ausführt).
Offensichtlicher Vorteil ist der Leistungsgewinn (keine Wartezeiten, da das Ergebnis bereits bekannt ist), leider weiß C# app keine SQL-Ausnahmen, die nach diesem Punkt passieren könnten.
Kann jemand meine Erklärung bestätigen? Könnte dieses Verhalten geändert werden?
Dies könnte Ihre Frage beantworten: http://stackoverflow.com/questions/7024109/how-can-i-get-an-error-message-that-happens-when- using-excutenonquery und das könnte auch hilfreich sein: http://support.microsoft.com/kb/321903/en-us –
Dies geschieht mit DataReaders, wenn Sie nicht bis zum Ende des Streams über das Ergebnis lesen. Ich weiß nicht, ob das für "ExecuteScalar" gilt. –