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(); 另外你的存储过程是怎么写的呢?
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(); 另外你的存储过程是怎么写的呢?
Create Proc ProceName
(
@CategoryYear NVARCHAR(20) = NULL,
@CategoryName NVARCHAR(20) = NULL OUTPUT //请注意
)
这不是Output吗?
SalesByCategory,我深得上面这段代码就一个地方有问题
lblCateName.Text = cmdSales.Parameters["@CategoryName"].Value.ToString();
可我不知道这句话有什么问题,到底该如何将output属性的SqlParameter的值输出啊?
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
这句话倒没有错误.
不过你可以看看Northwind里的存储过程SalesByCategory是不是下面的形式:
Create Procedure SalesByCategory
(
@OrdYear NVARCHAR(20),
@CategoryName NVARCHAR(20) OUTPUT //请注意是否有OUTPUT。
)
.....
你就该将:
...
@CategoryName nvarchar(15), @OrdYear nvarchar(4) = '1998'
改为:
@CategoryName nvarchar(15) output, @OrdYear nvarchar(4) = '1998'
...