У меня есть некоторый код, который пытается собрать статистику таблицы для заданной схемы и таблицы Oracle. Код должен дублировать инструкцию SQL, которая выглядит следующим образом:
EXEC DBMS_STATS.GATHER_TABLE_STATS(ownname=>'SchemaName', tabname=>'TableName', estimate_percent=>DBMS_STATS.AUTO_SAMPLE_SIZE, method_opt=>'FOR ALL COLUMNS SIZE AUTO');
Код C # выглядит следующим образом:
using (var connection = new OracleConnection(GetConnectionString()))
{
connection.Open();
using (var command = connection.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", "DBMS_STATS.AUTO_SAMPLE_SIZE"));
//command.Parameters.Add(new OracleParameter("method_opt", "FOR ALL COLUMNS SIZE AUTO"));
command.ExecuteNonQuery();
}
connection.Close();
}
Драйвер Oracle недоволен DBMS_STATS.AUTO_SAMPLE_SIZE
по понятным причинам, но я не знаю, почему он также запрещает FOR ALL COLUMNS SIZE AUTO
.
Есть идеи, как лучше установить параметры estimate_percent
и method_opt
при вызове этого процесса из .Net?