c#如何得到存储过程output值

2025-05-08 13:34:26
推荐回答(2个)
回答1:

using System.Data;
using System.Data.SqlClient
SqlConnection conn = new  SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings[SiteClass.dbname].ToString());
SqlCommand cmd = new SqlCommand("dbo.Backorder", conn);
conn.Open();
   cmd.CommandType = CommandType.StoredProcedure;
   
               cmd.Parameters.Add("@orderid", SqlDbType.BigInt); 
               cmd.Parameters.Add("@userid", SqlDbType.Int);               
  
               cmd.Parameters.Add("@alert", SqlDbType.NVarChar, 100);
               cmd.Parameters.Add("@success", SqlDbType.Bit);
               cmd.Parameters.Add("@eval", SqlDbType.NVarChar, 100);
               cmd.Parameters[0].Value = orderid; 
               cmd.Parameters[1].Value = SiteClass.CurrentUserId;                

               cmd.Parameters["@alert"].Direction = ParameterDirection.Output;
               cmd.Parameters["@success"].Direction = ParameterDirection.Output;
                cmd.Parameters["@eval"].Direction = ParameterDirection.Output;
               cmd.ExecuteNonQuery();
                string alert = cmd.Parameters["@alert"].Value.ToString();
                bool success = cmd.Parameters["@success"].Value.ToString().AsBool();
                string eval = cmd.Parameters["@eval"].Value.ToString();
Response.Write(SiteClass.writejson(true,true,alert,"",eval));
Response.End();

刚好写了一个。

回答2:

具体就是在代码中将SqlParameter的Direction属性设定为Output的(如p.Direction = System.Data.ParameterDirection.Output),然后执行完查询后,获取这个参数的值即可。