Search code examples
javajdbccallable-statement

how to get callable column name in jdbc


As we all know, if we execute a sql for query, we can use rs.getMetaData() to get the result metadata. We use it to get the resultset column.

But if I use a callable, I want to get the column for the OUT Mode column name. How can i get it?


Solution

  • You can use this method:

    java.sql.DatabaseMetaData.getColumns(String catalog, String schemaPattern, String tableNamePattern, String columnNamePattern)

    Each column description has the following columns: Each column description has the following columns:

       1. TABLE_CAT String => table catalog (may be null)
       2. TABLE_SCHEM String => table schema (may be null)
       3. TABLE_NAME String => table name
       4. COLUMN_NAME String => column name
       5. DATA_TYPE int => SQL type from java.sql.Types
       6. TYPE_NAME String => Data source dependent type name, for a UDT the type name is fully qualified
       7. COLUMN_SIZE int => column size.
       8. BUFFER_LENGTH is not used.
       9. DECIMAL_DIGITS int => the number of fractional digits. Null is returned for data types where DECIMAL_DIGITS is not applicable.
      10. NUM_PREC_RADIX int => Radix (typically either 10 or 2)
      11. NULLABLE int => is NULL allowed.
              * columnNoNulls - might not allow NULL values
              * columnNullable - definitely allows NULL values
              * columnNullableUnknown - nullability unknown 
      12. REMARKS String => comment describing column (may be null)
      13. COLUMN_DEF String => default value for the column, which should be interpreted as a string when the value is enclosed in single quotes (may be null)
      14. SQL_DATA_TYPE int => unused
      15. SQL_DATETIME_SUB int => unused
      16. CHAR_OCTET_LENGTH int => for char types the maximum number of bytes in the column
      17. ORDINAL_POSITION int => index of column in table (starting at 1)
      18. IS_NULLABLE String => ISO rules are used to determine the nullability for a column.
              * YES --- if the parameter can include NULLs
              * NO --- if the parameter cannot include NULLs
              * empty string --- if the nullability for the parameter is unknown 
      19. SCOPE_CATLOG String => catalog of table that is the scope of a reference attribute (null if DATA_TYPE isn't REF)
      20. SCOPE_SCHEMA String => schema of table that is the scope of a reference attribute (null if the DATA_TYPE isn't REF)
      21. SCOPE_TABLE String => table name that this the scope of a reference attribure (null if the DATA_TYPE isn't REF)
      22. SOURCE_DATA_TYPE short => source type of a distinct type or user-generated Ref type, SQL type from java.sql.Types (null if DATA_TYPE isn't DISTINCT or user-generated REF)
      23. IS_AUTOINCREMENT String => Indicates whether this column is auto incremented
              * YES --- if the column is auto incremented
              * NO --- if the column is not auto incremented
              * empty string --- if it cannot be determined whether the column is auto incremented parameter is unknown 
    

    A simple implementation:

    ResultSet columns = dbmd.getColumns(null, null, tableName, null);
    final List<String> columnList = new ArrayList<String>();
    while (columns.next())
    {
         columnList.add(columns.getString(4));
    }