Java 解析JDBC Oracle索引列名
嗨,有没有可能从索引中解析真实的列名? 我使用: 但我有这样的感觉:Java 解析JDBC Oracle索引列名,java,oracle,jdbc,oracle11g,Java,Oracle,Jdbc,Oracle11g,嗨,有没有可能从索引中解析真实的列名? 我使用: 但我有这样的感觉: [table=LOG_EMAIL, name=LOG_EMAIL_USERS_ID, columns=[SYS_NC00011$ A], unique=false] 如何解析:SYS\u NC00011$ 我使用ojdbc6-11.2.0.4我将使用ResultSetMetadata- ResultSetMetaData rsmd = rs.getMetaData(); for (int i = 1; i <= rs
[table=LOG_EMAIL, name=LOG_EMAIL_USERS_ID, columns=[SYS_NC00011$ A], unique=false]
如何解析:SYS\u NC00011$
我使用ojdbc6-11.2.0.4我将使用ResultSetMetadata-
ResultSetMetaData rsmd = rs.getMetaData();
for (int i = 1; i <= rsmd.getColumnCount(); i++) {
System.out.println(rsMetaData.getColumnName(i));
}
ResultSetMetaData rsmd=rs.getMetaData();
对于(inti=1;i,该索引是基于函数的(表达式)索引
该名称引用的表达式存储在系统视图user\u ind\u expressions
中:
select column_expression
from user_ind_expressions
where index_name = 'LOG_EMAIL_USERS_ID'
and column_position = 1;
如果索引中有多个表达式,则在user\u ind\u expressions
中有多行,其中列位置的值不同(第一个表达式为1,第二个表达式为2,依此类推)。名称SYS\u NC00011$
将不会显示在该视图中。为什么需要它?为什么使用JDBC API?列名看起来是“coocked”一些函数索引的名称。尝试使用dbms_元数据。获取_ddl。我需要它来检查ERM vs DB。我使用JDBC是因为我们也使用其他DBs。恐怕使用JDBC API无法完成。您将需要一些依赖于数据库供应商的部分。那么ResultSetMetaData
如何准确地返回关于表上索引的信息?您还知道吗在哪里可以找到排序?对于基于函数的索引,Oracle返回null而不是A或D。这应该是getIndexInfo()
返回的列ORDINAL_POSITION
的值-但我不确定该列_POSITION是指索引中的所有列,还是仅指基于函数的列。这不是“ORDINAL_POSITION short=>索引中的列序列号;当类型为tableIndexStatistic时为零”它应该是:“ORDINAL_POSITION short=>索引中的列序列号;当类型为tableIndexStatistic时为零”…它为空,但应该是desc
select column_expression
from user_ind_expressions
where index_name = 'LOG_EMAIL_USERS_ID'
and column_position = 1;