Oracle
 sql >> база данни >  >> RDS >> Oracle

JDBC:вземете типа на масив от метаданните

Използвайте java.sql.ResultSetMetaData.getColumnTypeName() :

Настройка на Oracle :

CREATE OR REPLACE TYPE random_array IS TABLE OF VARCHAR2(42);
/

Java :

Class.forName("oracle.jdbc.OracleDriver");

Connection con = DriverManager.getConnection(
    "jdbc:oracle:thin:@localhost:1521:orcl",
    "username",
    "password"
);

PreparedStatement st = con.prepareStatement(
    "SELECT random_array( 'a', 'b', 'c' ) AS array FROM DUAL"
);

ResultSet rs = st.executeQuery();
while( rs.next() )
{
  String type = rs.getMetaData().getColumnTypeName(1);
  String[] data = (String[]) rs.getArray(1).getArray();
  System.out.println( type + ": " + Arrays.toString( data ) );
}

st.close();
con.close();

Изход :

SCHEMA_NAME.RANDOM_ARRAY: [a, b, c]

Ако след това искате да се върнете в Oracle и да намерите типа на елементите на колекцията, които можете да използвате:

SELECT ELEM_TYPE_NAME,
       LENGTH,
       PRECISION,
       SCALE
FROM   ALL_COLL_TYPES
WHERE  TYPE_NAME = 'RANDOM_ARRAY'
AND    OWNER     = 'SCHEMA_NAME';

Кое извежда:

ELEM_TYPE_NAME LENGTH PRECISION SCALE
-------------- ------ --------- -----
VARCHAR2           42



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Генериране на произволно число във всеки ред в Oracle Query

  2. Използване на последователни стойности за първичния ключ в заявка INSERT

  3. Регулярният израз на Oracle съвпада с интервал

  4. java.sql.SQLException:невалидни аргументи в повикването

  5. Как да синхронизирам java метод, извикан от PL/SQL