Commande.ExecuteScalar retourne toujours null lors de la Procédure Stockée dans Management Studio fonctionne très bien

J'ai le SQL suivant une procédure stockée avec un paramètre d'entrée et un paramètre de sortie.

CREATE PROCEDURE [dbo].[spCanUserEdit]
(
@username nvarchar(255)
)
AS
BEGIN
SET NOCOUNT ON;

DECLARE @CanEdit bit

SELECT
    @CanEdit = CanUserEdit
FROM tblUsers
WHERE username = LOWER(@username)
RETURN SELECT @CanEdit
END
GO

Dans la procédure stockée ci-dessus CanUserEdit colonne dans tblUsers est de type bit de la colonne et avec une valeur par défaut à 0. Maintenant, quand j'exécute cette procédure dans Management Studio, il fonctionne bien, mais lorsque j'utilise command.ExecuteScalar() dans mon code C#, il renvoie toujours null. Quelqu'un pourrait-il me dire ce que je fais de mal ici.

Qui suit est ma méthode C#

public static bool CanUserEdit(string userName)
{
    using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings[Constants.ConnectionStringName].ConnectionString))
    {
        using (SqlCommand cmd = new SqlCommand())
        {
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.CommandText = "spCanUserEdit";
            cmd.Connection = conn;

            cmd.Parameters.Add(new SqlParameter("@username", userName));

            conn.Open();
            bool canEdit = (bool)cmd.ExecuteScalar();

            return canEdit;
        }
    }
}

Salutations

OriginalL'auteur Learning Curve | 2013-08-30