Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 解析JDBC Oracle索引列名_Java_Oracle_Jdbc_Oracle11g - Fatal编程技术网

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;