创建存储过程,调用存储过程
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();
}
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();
}
相关文章推荐
- [Database]创建存储过程并在ASP.NET中的调用带参数的存储过程与及调用带参数的SQL语句对比
- iBatis调用存储过程以及MySQL创建存储过程
- SQLServer 中存储过程返回的三种方式( 包括存储过程的创建, 在存储过程中调用, 在VS中调用的方法)
- Oracle 创建存储过程以及PlSql 调用 存储过程
- Oracle 存储过程的创建,及触发器调用存储过程
- 创建oracle的存储过程,以及通过JDBC调用该存储过程
- oracle中创建存储过程,以及存储过程中调用游标
- mysql 创建存储过程 java程序调用该存储过程
- mysql创建 存储过程 并通过java程序调用该存储过程
- SQLServer 中存储过程返回的三种方式( 包括存储过程的创建, 在存储过程中调用, 在VS中调用的方法)
- SQL Server2012 创建数据库存储过程和VS2015 C#调用自己的存储过程
- SQLServer 中存储过程返回的三种方式( 包括存储过程的创建, 在存储过程中调用, 在VS中调用的方法)
- 创建存储过程和java调用存储过程
- iBatis调用存储过程以及MySQL创建存储过程
- mysql 存储过程创建以及调用
- 存储过程循环+调用存储过程
- 如何调用存储过程,有返回值的,有参数的,存储过程中调用存储过程
- ASP中调用存储过程、存储过程语法、存储过程写法-sql server数据库
- 数据库技术_Orcale技术(0002)_5分钟会用存储过程_存储过程简单实例(包含循环、条件、增改查、参数传入、变量赋值、java调用等)
- 存储过程输出参数:C#中调用输入输出参数的存储过程