您的位置:首页 > 数据库 > SQL

C#调用SQL中的存储过程中有output参数

2016-06-06 16:14 459 查看
 想在存储过程中返回是否出错,回滚,就查了一些资料,以下方不整理一下

Alter proc Sp_AutoTenderTrialAll

@isAuto int ,

@id int,

@AdminId int ,

@AdminName varchar(250),

@output int output

as

Begin

   set  @output=1

end

/*************C#************/

 using (SqlConnection conn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString))

           {

               string strsql = string.Format("Sp_AutoTenderTrialAll");

               SqlCommand cmd = new SqlCommand(strsql, conn); //链接

               cmd.Parameters.Add(new SqlParameter("@isAuto", SqlDbType.Int));

               cmd.Parameters["@isAuto"].Value = auto;

               cmd.Parameters.Add(new SqlParameter("@id", SqlDbType.Int));

               cmd.Parameters["@id"].Value = int.Parse(id);

               cmd.Parameters.Add(new SqlParameter("@AdminId", SqlDbType.Int));

               cmd.Parameters["@AdminId"].Value = adminId;

               cmd.Parameters.Add(new SqlParameter("@AdminName", SqlDbType.VarChar));

               cmd.Parameters["@AdminName"].Value = adminName;

               cmd.Parameters.Add(new SqlParameter("@output", SqlDbType.Int));

               cmd.Parameters["@output"].Direction = ParameterDirection.Output;

               CommandType cmdType = CommandType.StoredProcedure;

               cmd.CommandType = cmdType;

               conn.Open();

               cmd.ExecuteNonQuery();

               return int.Parse(cmd.Parameters["@output"].Value.ToString());

           }

/*************************************整理后*********************************************/

  public int AutoTender(string id, string adminId, string adminName, int auto)

       {

           string strsql = string.Format("Sp_AutoTenderTrialAll");

           SqlParameter[] sqlParam = new SqlParameter[]{

            new SqlParameter("@isAuto",SqlDbType.Int){Value=auto},

            new SqlParameter("@id",SqlDbType.Int){Value=id},

            new SqlParameter("@AdminId",SqlDbType.Int){Value=adminId},

            new SqlParameter("@AdminName",SqlDbType.VarChar){Value=adminName},

            new SqlParameter("@output",SqlDbType.Int,4,ParameterDirection.Output,false,0,0,string.Empty,DataRowVersion.Default,null)

           };

           return DataBase.SpExecuteNonQueryOut(strsql, CommandType.StoredProcedure, sqlParam);

       }

        /// <summary>

        /// 存储过程

        /// </summary>

        /// <param name="cmdText"></param>

        /// <param name="cmdType"></param>

        /// <param name="values"></param>

        /// <returns></returns>

        public static int SpExecuteNonQueryOut(string cmdText, CommandType cmdType, SqlParameter[] values)

        {

            using (SqlConnection conn = new SqlConnection(connectionString))

            {

                SqlCommand cmd = new SqlCommand(cmdText, conn); //链接

                cmd.CommandType = cmdType;

                if (values != null)

                {

                    cmd.Parameters.AddRange(values);

                }

                conn.Open();

                int result = -1;

                cmd.ExecuteNonQuery();

                result = int.Parse(cmd.Parameters["@output"].Value.ToString());

               

                cmd.Dispose();

                conn.Close();

               

                return result;

                

            }

        }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: