您的位置:首页 > 其它

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

2008-08-21 16:57 441 查看
--取得可用容量

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();

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐