Search code examples
javaoracle-databasejdbcdatabase-metadata

Get metadata function in oracle


In oracle, i can get metadata of stored procedure:

 DatabaseMetaData dbMetaData = conn.getMetaData();
 ResultSet rs = dbMetaData.getProcedureColumns(conn.getCatalog(),
                          null,
                          "procedureNamePattern",
                          "columnNamePattern");

  while(rs.next()) {
      // get stored procedure metadata
      String procedureCatalog     = rs.getString(1);
      String procedureSchema      = rs.getString(2);
      String procedureName        = rs.getString(3);
      String columnName           = rs.getString(4);
      short  columnReturn         = rs.getShort(5);
      int    columnDataType       = rs.getInt(6);
      String columnReturnTypeName = rs.getString(7);
  }

But no data return with function:

DatabaseMetaData.getFunctionColumns()

How to get oracle function's metadata


Solution

  • It is not good but i work for me:

    select ARGUMENT_NAME, DATA_TYPE, IN_OUT from SYS.ALL_ARGUMENTS where object_name = upper(?) order by position as
    

    then in java, i can get

    String columnName = rs.getString("ARGUMENT_NAME");
    if (index == 0) {
        columnName = RETURN_VALUE;
    }
    String columnDataTypeInString = rs.getString("DATA_TYPE");
    String columnReturnInString = rs.getString("IN_OUT");