SqlCommand cmdSales = new SqlCommand("SalesByCategory",sqlConnection1);
cmdSales.CommandType = CommandType.StoredProcedure;
SqlParameterCollection sqlParams = cmdSales.Parameters;
   sqlParams.Add(new SqlParameter(("@OrdYear",SqlDbType.NVarChar));
   sqlParams.Add(new SqlParameter(("@CategoryName",SqlDbType.NVarChar));
   sqlParams.Add(new SqlParameter(("@CategoryName",SqlDbType.NVarChar));
   sqlParams["@CategoryName"].Direction = ParameterDirection.Output;
   ..........
   lblCateName.Text = cmdSales.Parameters["@CategoryName"].Value.ToString();  另外你的存储过程是怎么写的呢?
    
   

解决方案 »

  1.   

    肯定是存储过程写错了,
                          Create Proc ProceName
                              (
                                @CategoryYear NVARCHAR(20) = NULL,
                                @CategoryName NVARCHAR(20) = NULL OUTPUT  //请注意
                               )
      

  2.   

    paraSales.Direction = ParameterDirection.Output;
    这不是Output吗?
      

  3.   

    我没有写存储过程,我用的是SqlServer2000 里自带的数据库Northwind里的存储过程
    SalesByCategory,我深得上面这段代码就一个地方有问题
    lblCateName.Text = cmdSales.Parameters["@CategoryName"].Value.ToString();
    可我不知道这句话有什么问题,到底该如何将output属性的SqlParameter的值输出啊?
      

  4.   

    stored procedure 代码如下:
    ALTER PROCEDURE SalesByCategory
        @CategoryName nvarchar(15), @OrdYear nvarchar(4) = '1998'
    AS
    IF @OrdYear != '1996' AND @OrdYear != '1997' AND @OrdYear != '1998' 
    BEGIN
    SELECT @OrdYear = '1998'
    END
      

  5.   

    lblCateName.Text = cmdSales.Parameters["@CategoryName"].Value.ToString();
    这句话倒没有错误.
    不过你可以看看Northwind里的存储过程SalesByCategory是不是下面的形式:
     Create Procedure SalesByCategory
          (
               @OrdYear NVARCHAR(20),
               @CategoryName NVARCHAR(20) OUTPUT  //请注意是否有OUTPUT。
           )
    .....
      

  6.   

    哦,我上面的代码贴迟了:
    你就该将:
    ...
    @CategoryName nvarchar(15), @OrdYear nvarchar(4) = '1998'
    改为:
    @CategoryName nvarchar(15) output, @OrdYear nvarchar(4) = '1998'
    ...