I'm无法修改Oracle参数'estimate_percent'从c#

本文关键字:estimate percent 参数 修改 Oracle | 更新日期: 2023-09-27 18:11:24

using (var command = oracleConnection.CreateCommand())
{
       command.CommandText = "DBMS_STATS.GATHER_TABLE_STATS";
       command.CommandType = CommandType.StoredProcedure;
       command.Parameters.Add(new OracleParameter("ownname", schemaname));                        
       command.Parameters.Add(new OracleParameter("tabname", tablename));
       //command.Parameters.Add(new OracleParameter("estimate_percent", 10));
       //command.Parameters.Add(new OracleParameter("estimate_percent", Decimal.Parse("10")));
       //command.Parameters.Add("estimate_percent", OracleDbType.Decimal).Value = 10;                            
       int ret = command.ExecuteNonQuery();                        
 }

所有注释掉的方法导致错误- ORA-20001: 10是一个无效的标识符。Oracle的estimate_percent的数据类型是number。

I'm无法修改Oracle参数'estimate_percent'从c#

尝试在参数声明中使用显式OracleDb类型:

using (var command = oracleConnection.CreateCommand())
{
    command.CommandText = "DBMS_STATS.GATHER_TABLE_STATS";
    command.CommandType = CommandType.StoredProcedure;
    command.Parameters.Add(new OracleParameter("ownname", OracleDbType.Varchar2));
    command.Parameters.Add(new OracleParameter("tabname", OracleDbType.Varchar2));
    command.Parameters.Add(new OracleParameter("estimate_percent", OracleDbType.Decimal));
    command.Parameters[0].Value = schemaname;
    command.Parameters[1].Value = tablename;
    command.Parameters[2].Value = 10M;
    int ret = command.ExecuteNonQuery();
}

偶然发现了解决方案。Oracle是按顺序引用参数的,而不是按名称。"estimate_percent"是第4个参数,所以我只需添加第3个参数"partname"就可以了。

相关文章:
  • 没有找到相关文章