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

解决方案 »

  1.   

    myCommand.ExecuteNonQuery();
    return (int)myCommand.Parameters("@ID").Value;--改成这样
      

  2.   

    上面写错了,改成这个来看看
    myCommand.ExecuteNonQuery();
    int res = (int)myCommand.Parameters("@ID").Value;......return res;
      

  3.   

    楼上兄,你没看明白吧?
    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 ;}
      

  4.   

    还是提示错误:“System.Data.SqlClient.SqlCommand.Parameters”表示“属性”,此处应为“方法”
      

  5.   

    myCommand.Parameters["@ID"].Value
    呵呵笔误,是方括号不是园括号
      

  6.   

    调用存储过程:
    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
    你可以试一下
      

  7.   

    int res = Convert.ToInt32(myCommand.Parameters("@ID").Value);
      

  8.   

    int res = Convert.ToInt32(myCommand.Parameters["@ID"].Value);
      

  9.   

    xiaohutushen兄,我的outqty表示的是出库数量变量,怎么能当返回值呢?
      

  10.   

    调试提示res在类或命名空间不存在
      

  11.   

    xiaohutushen的存储过程,试过了,和我原来的一样,无论出库数量多少都只执行库存不足的情况
      

  12.   

    那你在parameteroutQty.Value = noutQty;
    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
      

  13.   

    在存储过程定义一个输出参数(output),来替换ReturnValue
      

  14.   

    if(nID <= 0)
      {
        Response.Write("<script>alert(\"库存不足请重新输入!\");</script>");
        return ;
       }你判断的是小于等于0 可你返回值是-1  判断有问题
      

  15.   

    CREATE   procedure Pr_GetinStoragetotalQty
    (
      @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);
    }