Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

JDBC :मेटाडेटा से एक सरणी का प्रकार प्राप्त करें

java.sql.ResultSetMetaData.getColumnTypeName() :

Oracle सेटअप :

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

जावा :

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. जांचें कि कोई फ़ाइल मौजूद है या नहीं?

  2. ClassCastException:org.jboss.jca.adapters.jdbc.jdk6.WrappedPreparedStatementJDK6 OraclePreparedStatement पर नहीं डाली जा सकती

  3. सोलारिस 10 . पर बेहतर मेमोरी (हीप) प्रबंधन

  4. मैं एक मूल्य को सीमित करने के लिए Oracle SQL में एक बाधा कैसे जोड़ूँ?

  5. ORA-01654:अनुक्रमणिका का विस्तार करने में असमर्थ