Return-Wert einer gespeicherten Prozedur in C# gibt Fehler

Ich versuche zum abrufen der return-Wert einer gespeicherten Prozedur in SQL Server 2005 wie folgt:

        OleDbCommand comm = new OleDbCommand(process_name, connection);
        comm.CommandType = CommandType.StoredProcedure;

        for (int i = 0; i < process_parameters.Length; i++)
            comm.Parameters.AddWithValue(process_parameters[i].ParameterName, process_parameters[i].Value);

        //Add output param
        comm.Parameters.Add("@TestID", OleDbType.Integer).Direction = ParameterDirection.ReturnValue;

        comm.ExecuteNonQuery();

Wenn ExecuteNonQuery() aufgerufen, allerdings bekomme ich wieder eine OleDbException sagen: "Prozedur oder Funktion myStoredProcedure hat zu viele Argumente angegeben." Meine gespeicherten Prozedur wie folgt beginnt:

ALTER PROCEDURE [dbo].[spTabtempTestsINSERT]
(
            @Param1     char (64),
            @Param2     char (128),
            @Param3     char (64),
)
AS
BEGIN
    Declare     @TestID         int

Und endet mit der folgenden:

    RETURN @TestID
END

Bedeutet die Tatsache, dass der Rückgabewert deklariert, anstatt als parameter übergeben werden, haben nichts zu tun mit es? Wenn ja, wie bekomme ich den return-Wert einer der Parameter, die erklärt, nachdem die gespeicherte Prozedur beginnt? Vielen Dank für Ihre Hilfe.

UPDATE:
Ich habe versucht, die vorgeschlagenen änderungen so weit, ich habe die folgende Zeile:

            OleDbCommand comm = new OleDbCommand(process_name, connection);
            comm.CommandType = CommandType.StoredProcedure;

            for (int i = 0; i < process_parameters.Length; i++)
                comm.Parameters.AddWithValue(process_parameters[i].ParameterName, process_parameters[i].Value);

            var testID = (int)comm.ExecuteScalar();

Nun, wenn ExecuteScalar() ausgeführt, ich bekomme eine NullReferenceException mit der Objektverweis wurde nicht auf eine Instanz eines Objekts.

Hinweis: ich habe auch versucht, wenn er auf einen integer int testID = (int)comm.ExecuteScalar(); und ich bekomme immer noch den gleichen Fehler.

Schreibe einen Kommentar