我正在尝试获取当前Oracle用户所拥有的表的列表。我已经在oracle中创建了一个用户,其中我有以下2个表:
类别
地址
现在,当我在oracle中的查询下面运行时,我只会得到想要的2个表以上:
SELECT table_name FROM user_tables;
上述查询的引用:https://www.arungudelli.com/tutorial/oracle/list-all-tables-in-oracle-query/
但是问题是,当我尝试使用GetSchema方法获取表列表时,我什么也没得到:
public Datatable GetTables(DbConnection conn)
{
conn.Open();
if (conn.State == ConnectionState.Open)
{
var tables = conn.GetSchema("Tables", new string[] { "user_tables" });
}
conn.Close();
}
现在,当我喜欢下面的内容时,我会得到不必要的表(> 1000),它们是系统表和其他表(尽管我只有类别和地址表,但不知道它们来自何处):
var tables = conn.GetSchema("Tables");
所以我只想获取当前Oracle用户拥有的表列表。下面是我的连接字符串:
data source="(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=MyService)))";user id=C##Db1;password=root123;
有人可以帮我吗?
答案 0 :(得分:1)
摘自Microsoft关于GetSchema(String, String[])
的文档
如果“表”集合具有三个限制(数据库,所有者和表名),并且您只想返回与所有者“卡尔”关联的表,则需要传递以下值:null ,“卡尔”。如果未传递限制值,则将默认值用于该限制。这与传递null相同,这与传递参数值的空字符串不同。在这种情况下,空字符串(“”)被视为指定参数的值。
您可以阅读更多here