- 增加 IDbFirst.ExistsTable 方法判断表是否存在;

This commit is contained in:
28810
2020-08-11 12:48:26 +08:00
parent 1ab1d16e53
commit da6effcf52
30 changed files with 616 additions and 17 deletions

View File

@ -166,6 +166,25 @@ namespace FreeSql.Odbc.Oracle
return ds.Select(a => a.FirstOrDefault()?.ToString()).ToList();
}
public bool ExistsTable(string name, bool ignoreCase)
{
if (string.IsNullOrEmpty(name)) return false;
var tbname = _commonUtils.SplitTableName(name);
if (tbname?.Length == 1)
{
var userId = (_orm.Ado.MasterPool as OdbcOracleConnectionPool)?.UserId;
if (string.IsNullOrEmpty(userId))
using (var conn = _orm.Ado.MasterPool.Get())
{
userId = OdbcOracleConnectionPool.GetUserId(conn.Value.ConnectionString);
}
tbname = new[] { userId, tbname[0] };
}
if (ignoreCase) tbname = tbname.Select(a => a.ToLower()).ToArray();
var sql = $" select 1 from all_tab_comments where {(ignoreCase ? "lower(owner)" : "owner")}={_commonUtils.FormatSql("{0}", tbname[0])} and {(ignoreCase ? "lower(table_name)" : "table_name")}={_commonUtils.FormatSql("{0}", tbname[1])}";
return string.Concat(_orm.Ado.ExecuteScalar(CommandType.Text, sql)) == "1";
}
public List<DbTableInfo> GetTablesByDatabase(params string[] database2)
{
var loc1 = new List<DbTableInfo>();