MrReview 10 Geschrieben 27. April 2009 Melden Teilen Geschrieben 27. April 2009 Hallo zusammen! Habe ein ganz komisches Phänomen! Ich habe ein VB.NET Programm, welches eine Stored Procedures auf einem SQL Server (2005) ausführen soll. Am Anfang ging es auch. Habe dann einen weiteren Parameter in eine SP eingefügt und seitdem wird nur noch -1 als Return Value zurückgegeben! Es kommt auch keine Exception oder so... Wenn ich die SP jedoch auf dem Server "manuell" aufrufe, dann klappt das einfügen / löschen. Habe dann mal eine weitere SP angelegt, die KEINE Parameter übergeben bekommt, dann klappt diese auch aus .NET heraus!?!?!?! Hier mal noch der aufrufende Code: Try Dim command As SqlCommand = New SqlCommand("spDeleteEntries", connection) 'Dim command As SqlCommand = New SqlCommand("spTest", connection) command.CommandType = CommandType.StoredProcedure command.Parameters.Add("@Date", strDate) command.Parameters.Add("@Uploader", cboUploader.SelectedIndex) command.Parameters.Add("@All", All) DeleteEntries = CInt(command.ExecuteNonQuery().ToString) MsgBox(DeleteEntries) Catch ex As Exception AddStatus("ERROR: " & ex.Message) 'Throw Finally connection.Close() End Try und eine der Stored Procedures: USE [dbAussenstaendeTest] GO /****** Object: StoredProcedure [dbo].[spDeleteEntries] Script Date: 04/27/2009 08:24:34 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER PROCEDURE [dbo].[spDeleteEntries] @Date As datetime, @Uploader As Integer, @All As bit AS IF @Uploader = 90 AND @All = 1 BEGIN DELETE FROM tblAussenstaendeMoeller END ELSE IF @Uploader = 95 AND @All = 1 BEGIN DELETE FROM tblAussenstaende END ELSE IF @Uploader = 95 AND @All = 0 BEGIN DELETE FROM tblAussenstaende WHERE Monat = @Date END RETURN @@RowCount Danke für Eure Hilfe, steh grad echt aufm Schlauch :( Gruß, MrReview Zitieren Link zu diesem Kommentar
phoenixcp 10 Geschrieben 27. April 2009 Melden Teilen Geschrieben 27. April 2009 Hallo MrReview Die Parameter (@Date, @Uploader und @All) musst du in dem CommandText deines SQLCommands mit angeben. Nur Parameter, welche dort mit angegeben sind, können anschließend über die ParameterCollection befüllt und genutzt werden. Anbei nochmal der entsprechende Link auf die MSDN, wo du das ganze nochmal mit einem Beispiel hinterlegt siehst: SqlCommand.Parameters Property (System.Data.SqlClient) Wenn du noch Fragen hast, meld dich einfach. Gruß und viel Erfolg Carsten Zitieren Link zu diesem Kommentar
MrReview 10 Geschrieben 27. April 2009 Autor Melden Teilen Geschrieben 27. April 2009 Hallo MrReview Die Parameter (@Date, @Uploader und @All) musst du in dem CommandText deines SQLCommands mit angeben. Nur Parameter, welche dort mit angegeben sind, können anschließend über die ParameterCollection befüllt und genutzt werden. Anbei nochmal der entsprechende Link auf die MSDN, wo du das ganze nochmal mit einem Beispiel hinterlegt siehst: SqlCommand.Parameters Property (System.Data.SqlClient) Wenn du noch Fragen hast, meld dich einfach. Gruß und viel Erfolg Carsten In dem CommandText? Aber ich gebe doch nur den Namen der Stored Procedure an und keinen SQL-String?!?! Wenn ich absichtlich weniger Parameter übergebe, dann kommt ja auch ne Exception. Aber ich bekomme als Result nur -1 zurück und keine Exception?!?! Und vorher hat es ja schonmal geklappt. Erst nachdem ich noch weitere Parameter eingetragen hab, geht es nicht mehr! Zitieren Link zu diesem Kommentar
phoenixcp 10 Geschrieben 27. April 2009 Melden Teilen Geschrieben 27. April 2009 Die Notation deines SQLCommands lautet lt. MSDN: SQLCommand(<CommandText>, <Connection>) Wenn wir es also absolut formal betrachten, wäre dein CommandText eigentlich sogar eine selbststehende SQL-Anweisung, ob die nun "Select * from Blah" oder "Exec SP_Schlagmichtot" heißt. Oder? Zitieren Link zu diesem Kommentar
MrReview 10 Geschrieben 27. April 2009 Autor Melden Teilen Geschrieben 27. April 2009 Naja, nicht ganz... Durch den Eintrag "command.CommandType = CommandType.StoredProcedure" sag ich ihm ja, dass es eine SP ist und kein "Text". Habs aber mal getestet und dann kommt die Meldung, dass er die Stored Procedure "EXEC spDeleteEntries" nicht findet! Zitieren Link zu diesem Kommentar
Cybquest 36 Geschrieben 27. April 2009 Melden Teilen Geschrieben 27. April 2009 Vielleicht hilft das hier weiter... Configuring Parameters and Parameter Data Types (ADO.NET) Wann hat es denn funktioniert und mit welchem Parameter kam der Fehler? Mit dem @All? Wenn ich die MSDN-Seite richtig interpretiere, hast Du bei dem ...parameters.Add ggf. einen Fehler drin. Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.