c#操作sqlserver 存储过程是,参数类型是ParameterDirection.InputOutput,
现在存储过程没问题,但是却不能返回值,
请问这是什么原因?

解决方案 »

  1.   

    以下是详细代码:
    private SqlConnection con = new SqlConnection(SQLHelper_Erp.sConnStr);
    bool isOK = true;
                int num = -1;
                con.Open();
                SqlTransaction transaction = con.BeginTransaction(IsolationLevel.ReadCommitted);            string MyProcedure = "procSaveDepartment";
                SqlCommand cmd = new SqlCommand(MyProcedure, transaction.Connection);
                cmd.Transaction = transaction;            try
                {
                    SqlParameter[] Params = 
                    {
                        SQLHelper_Erp .MakeInOutParam ("@DepartmentID",info.DepartmentID ,SqlDbType.Int,9),
                        SQLHelper_Erp.MakeInParam ("@DepartmentCode",info.DepartmentCode ),
                        SQLHelper_Erp.MakeInParam ("@DepartmentName",info.DepartmentName ),
                        SQLHelper_Erp.MakeInParam ("@ParentDepartmentID",info.ParentDepartmentID ),
                        
                        SQLHelper_Erp.MakeInParam ("@deptTel",info.deptTel ),
                        SQLHelper_Erp.MakeInParam ("@deptFax",info.deptFax ),
                        SQLHelper_Erp.MakeInParam ("@DataStatus",info.DataStatus ),
                        SQLHelper_Erp.MakeInParam ("@Create_UID",info.Create_UID ),
                        
                        SQLHelper_Erp.MakeInParam ("@Create_Date",info.Create_Date ),
                        SQLHelper_Erp.MakeInParam ("@Update_UID",info.Update_UID ),
                        SQLHelper_Erp.MakeInParam ("@Update_Date",info.Update_Date ),
                        SQLHelper_Erp.MakeInParam ("@Disuse_UID",info.Disuse_UID ),
                        
                        SQLHelper_Erp.MakeInParam ("@Disuse_Date",info.Disuse_Date ),
                        SQLHelper_Erp.MakeInParam ("@Re",info.Re ),
                    };                foreach (SqlParameter parm in Params)
                        cmd.Parameters.Add(parm);                SQLHelper_Erp.ExecuteNonQuery(cmd);                SQLHelper_Erp.ExecuteNonQuery(transaction, "delete from DepartmentList where DepartmentID=" + cmd.Parameters[0].Value.ToString ()  + "");                transaction.Commit();
                    con.Close();
                    isOK = true;
                }
                catch (SqlException ex)
                {
                    transaction.Rollback();
                    con.Close();
                    isOK = false;
                }
                return isOK;
      

  2.   

    怎么写的
    设置parms[1].Direction=ParameterDirection.InputOutput;
    单步执行看看
    using(SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["SqlServer"].ToString()))
    {
    conn.Open();
    SqlCommand MyCommand = new SqlCommand("", conn);
    MyCommand.CommandType = CommandType.StoredProcedure;
    MyCommand.Parameters.Add(new SqlParameter("@a", SqlDbType.Int));
    MyCommand.Parameters["@a"].Value = 20;
    MyCommand.Parameters.Add(new SqlParameter("@b", SqlDbType.Int));
    MyCommand.Parameters["@b"].Direction = ParameterDirection.Output;
    MyCommand.ExecuteNonQuery();
    Response.Write(MyCommand.Parameters["@b"].Value.ToString());
    }