得不到存储过程return参数问题?
存储过程:
ALTER procedure GetCustomer @CustomerID nchar(5),
@CompanyName nvarchar(40) output,
@ContactName nvarchar(30) output,
@ContactTitle nvarchar(30) output as
select @CompanyName=CompanyName,@ContactName=ContactName,
@ContactTitle=ContactTitle
FROM Customers where CustomerID=@CustomerID
IF @@rowcount = 1
return 0
ELSE
return -1
程序:
string strConn;
strConn = "Provider=SQLOLEDB;Data Source=(local);Initial Catalog=Northwind;uid=sa;pwd=sa";
OleDbConnection cn = new OleDbConnection(strConn);
cn.Open();
OleDbCommand cmd = cn.CreateCommand();
cmd.CommandText = "GetCustomer";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@CustomerID",OleDbType.WChar,5);
cmd.Parameters.Add("@CompanyName",OleDbType.VarWChar,40);
cmd.Parameters.Add("@ContactName",OleDbType.VarWChar,30);
cmd.Parameters.Add("@ContactTitle",OleDbType.VarWChar,30);
cmd.Parameters.Add("@RetVal",OleDbType.Integer);
cmd.Parameters["@CustomerID"].Value="ALFKI";
cmd.Parameters["@CompanyName"].Direction = ParameterDirection.Output;
cmd.Parameters["@ContactName"].Direction = ParameterDirection.Output;
cmd.Parameters["@ContactTitle"].Direction = ParameterDirection.Output;
cmd.Parameters["@RetVal"].Direction = ParameterDirection.ReturnValue;
try
{
cmd.ExecuteNonQuery();
}
catch(OleDbException ex)
{
Console.WriteLine(ex.Message);
Console.ReadLine();
}
cn.Close();
if(Convert.ToInt32(cmd.Parameters["@RetVal"].Value)==0)
Console.WriteLine(cmd.Parameters["@CompanyName"].Value);
else
Console.WriteLine("Customer not found.");
调试的时候出异常:为过程或函数 GetCustomer 指定的参数太多。
我把:参数@RetVal去掉,运行正常;
很困惑,请高手帮忙看下,谢谢。