/// <summary> Имеется ли у текущего пользователя данная роль </summary> public static bool HasRole(this OraDataAccess oda, string role) { //select count(*) from user_role_privs where granted_role = :p0 return(oda.ExecuteScalar("select nvl2(sr.role, 1,0) from dual left join session_roles sr on sr.role=:p0", role) + "" == "1"); }
/// <summary> Получить оценку количества записей в таблице, по которой производится сбор статистики </summary> /// <remarks> Выполнять из под владельца схемы </remarks> /// <remarks> Для получения точного значения нужно сначала собрать статистику, либо использовать 'select count(id) from mytable' (где id первичный ключ)</remarks> /// <returns> -1 - если таблица с данным именем не найдена, иначе - оценка числа строк в таблице</returns> public static decimal EstimateRowCount(this OraDataAccess oda, string tableName) { var v = oda.ExecuteScalar("select num_rows from user_tables where table_name = :p0", (tableName + "").ToUpper()); //можно использовать all_tables, но тогда нужно фильтровать по owner return(v == null ? -1 : (decimal)v); }
/// <summary> Получение следующего значения id (-db:next_id) </summary> public static string GetNextId(this OraDataAccess oda) { return(oda.ExecuteScalar(AppContext.Config["db", "next_id"]) + ""); }