У меня есть следующий запрос:
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
ALTER PROCEDURE [dbo].[Validate]
@a varchar(50),
@b varchar(50) output
AS
SET @Password = 
(SELECT Password
FROM dbo.tblUser
WHERE Login = @a)
RETURN @b
GO
Это прекрасно компилируется.
В С# я хочу выполнить этот запрос и получить возвращаемое значение.
Мой код выглядит следующим образом:
  SqlConnection SqlConn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["MyLocalSQLServer"].ConnectionString.ToString());
        System.Data.SqlClient.SqlCommand sqlcomm = new System.Data.SqlClient.SqlCommand("Validate", SqlConn);
        string returnValue = string.Empty;
        try
        {
            SqlConn.Open();
            sqlcomm.CommandType = CommandType.StoredProcedure;
            SqlParameter param = new SqlParameter("@a", SqlDbType.VarChar);
            param.Direction = ParameterDirection.Input;
            param.Value = Username;
            sqlcomm.Parameters.Add(param);
            SqlParameter retval = sqlcomm.Parameters.Add("@b", SqlDbType.VarChar);
            retval.Direction = ParameterDirection.ReturnValue;
            string retunvalue = (string)sqlcomm.Parameters["@b"].Value;
Примечание. Обработка исключений сокращается, чтобы код был коротким. Каждый раз, когда я добираюсь до последней строки, возвращается null. Какая логическая ошибка с этим кодом?
Спасибо