SqlParameter parameterID = new SqlParameter("@ID",SqlDbType.Int,4);
parameterID.Direction = ParameterDirection.ReturnValue;
myCommand.Parameters.Add(parameterID);放到添加参数第一个
*****************************************************************************
欢迎使用CSDN论坛专用阅读器 : CSDN Reader(附全部源代码) http://www.cnblogs.com/feiyun0112/archive/2006/09/20/509783.html
parameterID.Direction = ParameterDirection.ReturnValue;
myCommand.Parameters.Add(parameterID);放到添加参数第一个
*****************************************************************************
欢迎使用CSDN论坛专用阅读器 : CSDN Reader(附全部源代码) http://www.cnblogs.com/feiyun0112/archive/2006/09/20/509783.html
return (int)myCommand.Parameters("@ID").Value;--改成这样
myCommand.ExecuteNonQuery();
int res = (int)myCommand.Parameters("@ID").Value;......return res;
try
{
//执行数据库的存储过程(访问数据库)
myCommand.ExecuteNonQuery();
int res = Convert.ToInt32(myCommand.Parameters("@ID").Value);
}
catch(Exception ex)
{
throw new MyException("10001",ex.Message,ex);
}
finally
{
if (myConnection.State == ConnectionState.Open)
{
//关闭数据库的连接
myConnection.Close();
}
}return res ;}
呵呵笔误,是方括号不是园括号
public int GetinStoragetotalQty(String nProductID, int nStorageID,int noutQty)
{
//定义数据库的Connection and Command SqlConnection myConnection = new SqlConnection(ConfigurationSettings.AppSettings["SQLConnectionString"]);
SqlCommand myCommand = new SqlCommand("Pr_GetinStoragetotalQty",myConnection);//定义访问数据库的方式为存储过程myCommand.CommandType = CommandType.StoredProcedure;
//添加储存过程的参数
SqlParameter parameterProductID = new SqlParameter("@ProductID",SqlDbType.VarChar,25);
parameterProductID.Value = nProductID;
myCommand.Parameters.Add(parameterProductID);
SqlParameter parameterStorageID = new SqlParameter("@StorageID",SqlDbType.Int,4);
parameterStorageID.Value = nStorageID;
myCommand.Parameters.Add(parameterStorageID);
SqlParameter parameteroutQty = new SqlParameter("@outQty",SqlDbType.Int,4);
parameteroutQty.Value = noutQty;
myCommand.Parameters.Add(parameteroutQty);
SqlParameter parameterID = new SqlParameter("@ID",SqlDbType.Int,4);
parameterID.Direction = ParameterDirection.Output;
myCommand.Parameters.Add(parameterID);try
{
//打开数据库的连接
myConnection.Open();
}
catch(Exception ex)
{
throw new MyException("10001","数据库连接失败!",ex);
}try
{
//执行数据库的存储过程(访问数据库)
myCommand.ExecuteNonQuery();
}
catch(Exception ex)
{
throw new MyException("10001",ex.Message,ex);
}
finally
{
if (myConnection.State == ConnectionState.Open)
{
//关闭数据库的连接
myConnection.Close();
}
}return (int)parameterID.Value;}
SQL存储过程:
CREATE procedure Pr_GetinStoragetotalQty
(
@ProductID as varchar(50),
@StorageID as int,
@outQty as int output
)
as
Declare @suminstorageqty as int
-----统计目前库存总量
set @suminstorageqty=
(
select sum(库存数量) from 库存表 where productid=@Productid and StorageID=@StorageID
)
if @suminstorageqty<@outQty---目前库存小于要出库的数量,不够出库
begin
set @outQty = -1
endset @outQty = 1
你可以试一下
myCommand.Parameters.Add(parameteroutQty);
SqlParameter parameterID = new SqlParameter("@ID",SqlDbType.Int,4);
parameterID.Direction = ParameterDirection.Output;
myCommand.Parameters.Add(parameterID);
后面紧跟着定义
int res=-2;
那么这里
res = Convert.ToInt32(myCommand.Parameters["@ID"].Value);就不要int
{
Response.Write("<script>alert(\"库存不足请重新输入!\");</script>");
return ;
}你判断的是小于等于0 可你返回值是-1 判断有问题
(
@ProductID as varchar(50),
@StorageID as int,
@outQty as int ,
@id as int output
)
if @suminstorageqty<@outQty---目前库存小于要出库的数量,不够出库
set @id=0
else
set @id=1
return @id
public int GetinStoragetotalQty(String nProductID, int nStorageID,int noutQty)
{
......
SqlParameter parameterID = new SqlParameter("@ID",SqlDbType.Int,4);
parameterID.Direction =output;
myCommand.Parameters.Add(parameterID);
........
return Convert.ToInt32(myCommand.Parameters["@ID"].Value);
}