错误提示:Parameter 'l_ReStatus': No size set for variable length data type: String
背景: cmd.Parameters.Add("l_ReStatus", OracleType.VarChar).Direction = ParameterDirection.Output;
执行完cmd.ExecuteNonQuery();后直接进入catch语句
public bool RunProcZX(string User_Id,out string ReStatus)
{
OracleConnection conn = new OracleConnection(connStr);
conn.Open();
OracleCommand cmd = new OracleCommand("存储过程名", conn);
cmd.CommandType = CommandType.StoredProcedure;
//定义传入参数的类型。类型为OracleType.VarChar
cmd.Parameters.Add("l_User_Id", OracleType.VarChar).Direction = ParameterDirection.Input;
//传值
cmd.Parameters["l_User_Id"].Value = User_Id;
//传出参数,类似于c#中的out
cmd.Parameters.Add("l_ReStatus", OracleType.VarChar).Direction = ParameterDirection.Output;
try
{
cmd.ExecuteNonQuery();
ReStatus = cmd.Parameters["l_ReStatus"].Value.ToString();
return true;
}
catch
{
return false;
}
finally
{
conn.Close();
}
}
解决办法:cmd.Parameters.Add("l_ReStatus", OracleType.VarChar,
20).Direction = ParameterDirection.Output;
Parameter的参数设置长度(size属性)
实例化Parameter时,如果是字符型,一定要指定size属性(请使用截图显示的方法)