2010-08-08 77 views
20

我有一个输出参数的存储过程。如何使用C#代码读取此值?如何运行C#中有OUTPUT参数的存储过程?

+0

请邮寄到现在为止您编写的代码。 – 2010-08-08 09:02:22

+1

我喜欢这个,因为这是一个有用的问题,但由于缺乏“我试过这个”我不能这样做。 – JYelton 2013-09-16 17:37:40

回答

40

我假设你使用ADO.NET?如果是这样,SqlParameter类具有属性“方向”。将方向设置为输出,并在查询执行后读取该参数的值。

事情是这样的:

using (SqlCommand cmd = new SqlCommand("MyStoredProcedure", cn)) 
{ 
    cmd.CommandType = CommandType.StoredProcedure; 
    SqlParameter parm = new SqlParameter("@pkid", SqlDbType.Int); 
    parm.Value = 1; 
    parm.Direction = ParameterDirection.Input; 
    cmd.Parameters.Add(parm); 

    SqlParameter parm2 = new SqlParameter("@ProductName", SqlDbType.VarChar); 
    parm2.Size = 50; 
    parm2.Direction = ParameterDirection.Output; // This is important! 
    cmd.Parameters.Add(parm2); 

    cn.Open(); 
    cmd.ExecuteNonQuery(); 
    cn.Close(); 
} 
+0

我有另一个问题,我需要确定输出参数 是十进制(8,2)如何! – shmandor 2010-08-08 09:37:09

+0

我不确定我是否理解这个问题。如果您要在输出变量中返回一个小数,您应该将SqlDbType设置为十进制。如果你实际上返回一个十进制数,你可以像这样进行转换:(十进制)cmd.Parameters [@“MyDecimal”] Value – Merrimack 2010-08-08 09:46:31

+6

我强烈建议将'SqlConnection'和'SqlCommand'放入'using(.... ){...}'块作为最佳实践 – 2010-08-08 09:50:49