1

众所周知,如果我们执行一个 sql 进行查询,我们可以使用它rs.getMetaData()来获取结果元数据。我们使用它来获取结果集列。

但是,如果我使用可调用对象,我想获取 OUT Mode 列名称的列。我怎么才能得到它?

4

2 回答 2

1

您可以使用此方法:

java.sql.DatabaseMetaData.getColumns(字符串目录,字符串 schemaPattern,字符串 tableNamePattern,字符串 columnNamePattern)

每个列描述都有以下列: 每个列描述都有以下列:

   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 

一个简单的实现:

ResultSet columns = dbmd.getColumns(null, null, tableName, null);
final List<String> columnList = new ArrayList<String>();
while (columns.next())
{
     columnList.add(columns.getString(4));
}
于 2011-11-17T15:19:14.067 回答
0

你确定它的 tableName 而不是 Stored Proc Name?

于 2011-12-19T01:08:32.700 回答