应用程序 调用带返回值的存储过程

26 篇文章 0 订阅

CREATE proc TotalMoney 
@SupplierName varchar(15),
@ShouldPay money output,
@SolidPay money output,
@NoPay money output,
@rc int output
as 
select @ShouldPay=SUM(应收金额), @SolidPay=SUM(已收金额),@NoPay=(SUM(应收金额)-SUM(已收金额)) from 入库信息 where 供应商名称 like @SupplierName  

set @rc = @@ROWCOUNT 
RETURN
上面是存储过程。然后是调用该存储过程的类
下面是调用存储过程的方法
public class SP_TotalMoney
        {
            #region 变量

            public string supplierName = "";
            public float shouldPay = "";
            public float solidPay = "";
            public float noPay = "";
            public int rc;         

            #endregion

            #region 方法

            public SP_TotalMoney()
            { }

            public int ExecProc()
            {
                int rc = 1;
                SqlConnection conn = new SqlConnection(GlobalClass.GlobalClass.ConnectionString);
                SqlCommand sc = new SqlCommand("TotalMoney", conn);
                sc.CommandType = CommandType.StoredProcedure;

                sc.Parameters.Add("@SupplierName", SqlDbType.VarChar, 15);
                sc.Parameters["@SupplierName"].Value = supplierName;

                sc.Parameters.Add("@ShouldPay", SqlDbType.Money);
                sc.Parameters["@ShouldPay"].Direction = ParameterDirection.Output;

                sc.Parameters.Add("@SolidPay", SqlDbType.Money);
                sc.Parameters["@SolidPay"].Direction = ParameterDirection.Output;

                sc.Parameters.Add("@NoPay", SqlDbType.Money);
                sc.Parameters["@NoPay"].Direction = ParameterDirection.Output;

                sc.Parameters.Add("@rc", SqlDbType.Int);
                sc.Parameters["@rc"].Direction = ParameterDirection.Output;

                try
                {
                    if (conn.State == ConnectionState.Closed)
                    {
                        conn.Open();
                    }
                    sc.ExecuteNonQuery();

                    shouldPay = Convert.ToSingle(sc.Parameters["@ShouldPay"].Value);
                    solidPay = Convert.ToSingle(sc.Parameters["@SolidPay"].Value);
                    noPay = Convert.ToSingle(sc.Parameters["@NoPay"].Value);
                    rc = Convert.ToInt32(sc.Parameters["@rc"].Value);
                    if (rc > 0)
                    {
                        userID = Convert.ToInt32(sc.Parameters["@UserID"].Value);
                        realName = sc.Parameters["@RealName"].Value.ToString();
                    }
                }
                catch (Exception ex)
                {
                    rc = -99;
                    info = ex.Message;
                }
                finally
                {
                    conn.Close();
                }

                return rc;
            }

前台调用代码:
public string supplierName = "xx厂"; 
public float shouldPay = ""; 
public float solidPay = ""; 
public float noPay = ""; 
public int row_count; 
SP_TotalMoney tm = new SP_TotalMoney();
tm.supplierName = supplierName;
tm.ExecProc();
shouldPay = tm.shouldPay;
solidPay = tm.solidPay;
noPay = tm.noPay;
row_count = tm.rc;
写到这样再看不明白我也没办法了
 
 
参考地址:http://zhidao.baidu.com/question/38476271.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值