Benutzer mit den meisten Antworten
StoredProcedure Rückgabe

Frage
-
Hallo zusammen,
ich starte mit ExecuteNonQuery eine StoredProcedure
SqlCommand scmdSQLSPExec = new SqlCommand("DATA_IMPORT", connDB1); scmdSQLSPExec.CommandType = CommandType.StoredProcedure; scmdSQLSPExec.CommandTimeout = Properties.Settings.Default.intTimeOut; scmdSQLSPExec.ExecuteNonQuery();
wie kann man als Wert die Ausgabe von diese Procedure bekommen. Wenn man diese SP über SQL Management Studio ausführt, dann bekommt man als Text z.B. (50 Zeile(n) betroffen) und Fehler wenn es stattfindet. Ich fänge Fehler mit try-catch in C# ab, nur diese Fehler nicht eindeutig. "System.Data.SqlClient.SqlException: Zeichenfolgen- oder Binärdaten würden abgeschnitten." Wie bekommt man, wo es ist genau und welche SQL Statement aus SP betroffen ist.
Antworten
-
dann bekommt man als Text z.B. (50 Zeile(n) betroffen)
Hallo,
diese Info Message kann man über das SqlConnection.InfoMessage Event abfangen. Den Text müsstest Du aber selber parsen, wen Du den Wert wie 50 erhalten willst; wurde ich nicht machen. Zudem setzt man in eine SP das NOCOUNT auf ON, damit solche unnützen Daten eben nicht kommen.
Liefere besser über ein
SELECT @@RowCount AS AnzahlZeilen
die Anzahl betroffener Datensätze als einen numerischen Wert zurück.
"System.Data.SqlClient.SqlException: Zeichenfolgen- oder Binärdaten würden abgeschnitten."
Wenn Du die SP in SSMS aufrufst, erhälst Du in der Fehlermeldung de Zeilennummer der SP, an der der Fehler aufgetreten ist; dito in der Inner Exception in C#
Olaf Helper
[ Blog] [ Xing] [ MVP]- Als Antwort markiert andrej75 Dienstag, 19. April 2016 11:48
Alle Antworten
-
dann bekommt man als Text z.B. (50 Zeile(n) betroffen)
Hallo,
diese Info Message kann man über das SqlConnection.InfoMessage Event abfangen. Den Text müsstest Du aber selber parsen, wen Du den Wert wie 50 erhalten willst; wurde ich nicht machen. Zudem setzt man in eine SP das NOCOUNT auf ON, damit solche unnützen Daten eben nicht kommen.
Liefere besser über ein
SELECT @@RowCount AS AnzahlZeilen
die Anzahl betroffener Datensätze als einen numerischen Wert zurück.
"System.Data.SqlClient.SqlException: Zeichenfolgen- oder Binärdaten würden abgeschnitten."
Wenn Du die SP in SSMS aufrufst, erhälst Du in der Fehlermeldung de Zeilennummer der SP, an der der Fehler aufgetreten ist; dito in der Inner Exception in C#
Olaf Helper
[ Blog] [ Xing] [ MVP]- Als Antwort markiert andrej75 Dienstag, 19. April 2016 11:48
-
Hallo Andrej,
bzgl. des Rückgabewerts schau mal hier:
http://stackoverflow.com/questions/6210027/calling-stored-procedure-with-return-value
Bzgl. der Fehlermeldung solltest Du per catch( SqlException ex ) auch wirklich eine SqlException abfangen und kannst dann bspw. über die LineNumber Eigenschaft die Zeilennummer ermitteln.
https://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlexception.aspx
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community