string commandName = "Pr_Plan_TaskSend_GetTaskTypeCodeFromTaskSendID";
            #region Parameters
            SqlParameter[] parms = SqlHelperParameterCache.GetCachedParameterSet(ConnectionString.OmsRead, commandName);
            if (parms == null)
            {
                parms = new SqlParameter[] {
                    new SqlParameter("@TaskSendID", SqlDbType.Int),
                    new SqlParameter("@TaskTypeCode",  SqlDbType.VarChar,10)                };
                parms[0].Value = TaskSendID;
                parms[1].Direction = ParameterDirection.Output;
                parms[1].Value = "";
                SqlHelperParameterCache.CacheParameterSet(ConnectionString.OmsRead, commandName, parms);
            }           
            #endregion
            using (SqlDataReader dataReader = SqlHelper.ExecuteReader(ConnectionString.OmsRead, CommandType.StoredProcedure, commandName, parms)) ///这句报的错
ALTER PROCEDURE [dbo].[Pr_Plan_TaskSend_GetTaskTypeCodeFromTaskSendID]
    (@TaskSendID int, @TaskTypeCode VARCHAR(4) output)

解决方案 »

  1.   

    是存储过程的问题,现在新问题:
                using (SqlDataReader dataReader = SqlHelper.ExecuteReader(ConnectionString.OmsRead, CommandType.StoredProcedure, commandName, parms))
                {
                    while (dataReader.Read()) //这行没被执行,虽然out变量已经取得正确的值了
                    {
                        return dataReader.IsDBNull(0) ? "" : dataReader.GetString(1).ToString();                }
                }            return null;
      

  2.   

    你是不是在存储过程中使用了@tasnkEnd但是没有声明
    或者看看你是不是哪里笔误了写错了
      

  3.   

    看看过程有没有声明,再就是过程中的SQL语句是否有这个参数,最后看是否给这个参数赋值了。
      

  4.   

    调用的存储过程中有一个名为@TaskSend的参数,执行前并未对其进行设置
      

  5.   

    ALTER PROCEDURE [dbo].[Pr_Plan_TaskSend_GetTaskTypeCodeFromTaskSendID]
        (@TaskSendID int, @TaskTypeCode VARCHAR(4) output)@TaskSend你哪来的这个参数?
      

  6.   

    return dataReader.IsDBNull(0) ? "" : dataReader.GetString(1).ToString();
    return parms[1].Value.ToString(0;
    因为是out变量,所以datareader.read=false