从存储过程中获取默认返回值?

时间:2012-08-01 20:52:12

标签: c# sql stored-procedures ado.net

public int Test()
        {
            int result = 1;

            SqlCommand cmd = new SqlCommand("spTest", conn);
            cmd.CommandType = CommandType.StoredProcedure;

            var returnParameter = cmd.Parameters.Add("@RETURN_VALUE", SqlDbType.Int);
            returnParameter.Direction = ParameterDirection.ReturnValue;

            try
            {
                conn.Open();
                cmd.ExecuteNonQuery();
                result = Convert.ToInt32(returnParameter.Value);
            }
            catch (Exception e)
            {
                MessageBox.Show(e.Message.ToString());
            }
            finally
            {
                conn.Close();
            }

            return result;
        }

该方法以result = 1开始,因此如果查询成功,我可以看到它变为0。我测试了它,它确实从1变为0.我的问题是,这是从存储过程中获取默认RETURN_VALUE的正确方法吗?

这也将结果的值从1改为0.为什么?查询尚未运行。

public int Test()
        {
            int result = 1;

            SqlCommand cmd = new SqlCommand("spTest", conn);
            cmd.CommandType = CommandType.StoredProcedure;

            var returnParameter = cmd.Parameters.Add("@RETURN_VALUE", SqlDbType.Int);
            returnParameter.Direction = ParameterDirection.ReturnValue;

            result = Convert.ToInt32(returnParameter.Value);

            try
            {
                conn.Open();
                cmd.ExecuteNonQuery();
            }
            catch (Exception e)
            {
                MessageBox.Show(e.Message.ToString());
            }
            finally
            {
                conn.Close();
            }

            return result;
        }

1 个答案:

答案 0 :(得分:1)

是。虽然如果您的连接无法打开,您的finally

会出错

如果这是SQL Server,请不要使用sp

启动存储过程名称