2014-06-13 1 views
3

오라클에서, 내가 저장 프로 시저의 메타 데이터를 얻을 수 있습니다 :오라클의 메타 데이터 기능을 가져

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); 
    } 

하지만 기능이없는 데이터를 반환 :

DatabaseMetaData.getFunctionColumns() 

어떻게 얻을 오라클 함수의 메타 데이터를

답변

1

이 좋지 않아하지만 난 나를 위해 작동 :

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

다음 자바, 내가

String columnName = rs.getString("ARGUMENT_NAME"); 
if (index == 0) { 
    columnName = RETURN_VALUE; 
} 
String columnDataTypeInString = rs.getString("DATA_TYPE"); 
String columnReturnInString = rs.getString("IN_OUT"); 
얻을 수 있습니다
1

잘못된 것, Elliott Frisch

항상 다른 저장소/기능에 대해 동일한 결과를 반환합니다.

카탈로그 이름 = 스키마 이름은 =, 테이블 이름 = 열 이름 = PROCEDURE_CAT, 열 레이블 = PROCEDURE_CAT, 열 데이터 유형 = 12, 열 클래스 이름 = java.lang.String의, 열 반환 형식 이름 = VARCHAR2

카탈로그 이름 = 스키마 이름 =, 테이블 이름 = 열 이름 = PROCEDURE_SCHEM, 열 레이블 = PROCEDURE_SCHEM, 열 데이터 유형 = 12, 열 클래스 이름 = java.lang.String의, 열 반환 형식 이름 = VARCHAR2

카탈로그 이름 =, 스키마 이름 =, 테이블 이름 =, 열 이름 = PROCEDURE_NAME, 열 레이블 = PROCEDURE_NAME, 열 데이터 형식 = 12, 열 클래스 이름 = java.lang.String, 열 반환 형식 이름 = VARCHAR2

카탈로그 이름 =, 테이블 이름 =, 열 이름 = COLUMN_NAME, 열 레이블 = COLUMN_NAME, 열 데이터 형식 = 12, 열 클래스 이름 = java.lang.String 열 반환 형식 이름 = VARCHAR2

카탈로그 이름 = 스키마 이름은 =, 테이블 이름 = 열 이름 = COLUMN_TYPE, 열 레이블 = COLUMN_TYPE, 열 데이터 형식 = 2, 열 클래스 이름 = java.math.BigDecimal의, 열 반환 형식 이름 = 번호

카탈로그 이름 =, 스키마 이름 =, 테이블 이름 =, 열 이름 = DATA_TYPE, 열 레이블 = DATA_TYPE, 열 데이터 형식 = 2, 열 클래스 이름 = java.math.BigDecimal, 열 반환 형식 이름 = NUMBER

카탈로그 이름 =, 테이블 이름 =, 열 이름 = TYPE_NAME, 열 레이블 = TYPE_NAME, 열 데이터 형식 = 12, 열 클래스 이름 = java.lang.String, 열 반환 형식 이름 = VARCHAR2

카탈로그 이름 =, 스키마 이름 =, 테이블 이름 =, 열 이름 = PRECISION, 열 레이블 = 정밀도, 열 데이터 형식 = 2, 열 클래스 이름 = java.math.BigDecimal, 열 반환 형식 이름 = NUMBER

카탈로그 이름 =, 스키마 이름 =, 테이블 이름 =, 열 이름 = 길이, 열 레이블 = 길이, 열 데이터 형식 = 2, 열 클래스 이름 = java.math.BigDecimal, 열 반환 형식 이름 = NUMBER

카탈로그 이름 =, 스키마 이름 =, 테이블 이름 =, 열 이름 = SCALE, 열 레이블 = SCALE, 열 데이터 형식 = 2, 열 클래스 이름 = java.math.BigDecimal, 열 반환 형식 이름 = NUMBER

카탈로그 이름 =, 스키마 이름 =, 테이블 이름 =, 열 이름 = RADIX, 열 레이블 = RADIX, 열 데이터 형식 = 2, 열 클래스 이름 = java.math.BigDecimal, 열 반환 형식 이름 = NUMBER

카탈로그 이름 = , 스키마 이름 =, 테이블 이름 =, 열 이름 = NULLABLE, 열 레이블 = NULLABLE, 열 데이터 형식 = 2, 열 클래스 이름 = java.math.BigDecimal, Column 반환 형식 Name = NUMBER

카탈로그 이름 =, 테이블 이름 =, 열 이름 = REMARKS, 열 레이블 = REMARKS, 열 데이터 형식 = 12, 열 클래스 이름 = java.lang.String, 열 반환 유형 이름 = VARCHAR2

카탈로그 이름 =, 테이블 이름 =, 열 이름 = SEQUENCE, 열 레이블 = SEQUENCE, 열 데이터 형식 = 2, 열 클래스 이름 = java.math.BigDecimal, 열 반환 형식 이름 = NUMBER

카탈로그 이름 =, 스키마 이름 =, 테이블 이름 =, 열 이름 = OVERLOAD, 열 레이블 = OVERLOAD, 열 데이터 형식 = 12, 열 클래스 이름 = java.lang.String, 열 반환 형식 이름 = VARCHAR2

카탈로그 이름 =, 테이블 이름 =, 열 이름 = DEFAULT_VALUE, 열 레이블 = DEFAULT_VALUE, 열 데이터 형식 = -1, 열 클래스 이름 = java.lang.String, 열 반환 형식 이름 = LONG

관련 문제