创建存储过程,调用存储过程


--取得可用容量

IF OBJECT_ID (N'getAvailableVolume', N'P') IS NOT NULL

    DROP PROCEDURE getAvailableVolume;

GO

 

CREATE PROCEDURE getAvailableVolume

@kuwei varchar(50) = NULL,

@volume Decimal OUTPUT,

@volume2 Decimal OUTPUT 

AS

 

IF @kuwei IS NULL 

BEGIN 

 PRINT '库位不能为空!' 

 RETURN

END

--取得库存辅数量

Begin

    Set @volume = (

       SELECT SUM(SecondQuantity) as r

       FROM daiKuCun 

       WHERE KuWei = @kuwei

    )

End

--判断库存辅数量是否为空

IF @volume IS NULL 

BEGIN 

 Set @volume =0

END

 

--将没有过帐的辅数量纳入统计范围

Begin

    Set @volume2 = (

       SELECT SUM(SecondQuantity) AS r

       FROM daiIn

       WHERE (State = 0) AND (KuWei = @kuwei)

    )

End

--判断库存辅数量是否为空

IF @volume2 IS NULL 

BEGIN 

 Set @volume2 =0

END

 

--取得可用容量

Begin

    Set @volume = (SELECT Volume FROM daiKuWei WHERE Code = @kuwei)-@volume-@volume2

End

--输入可用容量

Select @volume as r

RETURN

GO

 

调用存储过程

EXEC getAvailableVolume 'A1',0,0

 C#调用存储过程

        

        SqlConnection conn = new SqlConnection();

        conn.ConnectionString = ConnString;
        try
        {
            conn.Open();
            SqlCommand comd = new SqlCommand();
            comd.Connection = conn;
            comd.CommandText = sql;
            comd.CommandType = CommandType.StoredProcedure;
            //
            SqlParameter param = new SqlParameter("@kuwei", SqlDbType.NVarChar);
            param.Direction = ParameterDirection.Input;
            param.Value = kuwei;
            comd.Parameters.Add(param);
            //
            param = new SqlParameter("@volume", SqlDbType.Decimal);
            param.Direction = ParameterDirection.Output;
            param.Value = 0;
            comd.Parameters.Add(param);
            //
            param = new SqlParameter("@volume2", SqlDbType.Decimal);
            param.Direction = ParameterDirection.Output;
            param.Value = 0;
            comd.Parameters.Add(param);
            
                       
            SqlDataReader reader = comd.ExecuteReader();
            if (reader.HasRows)
            {
                while (reader.Read())
                {

                    Response.Write("<?xml version=""1.0"" encoding=""utf-8"" ?>"n");
                    Response.Write("<tname>"n");
                    if (reader[return_field] != System.DBNull.Value)
                    {
                        Response.Write("<id>");
                        Response.Write(reader[return_field].ToString());
                        Response.Write("</id>"n");
                    }
                    Response.Write("</tname>");
                }
            }
            reader.Close();
            reader.Dispose();
            comd.Dispose();
        }
        catch (Exception ex)
        {
            Response.Write(ex.ToString());
        }
        finally
        {
            if (conn.State == ConnectionState.Open)
                conn.Close();
            conn.Dispose();
        }

原文地址:https://www.cnblogs.com/liuzhengdao/p/1273369.html