代码之家  ›  专栏  ›  技术社区  ›  Adnan

Java:从过程中读取元数据

  •  1
  • Adnan  · 技术社区  · 15 年前

    我正在寻找从Oracle存储过程中获取元数据的方法,例如输入/输出参数及其类型。

    我尝试过 DESC 但它不起作用:

    stmt = conn.createStatement();
    ResultSet rs1 = stmt.executeQuery("desc pack.procname");
    while ( rs1.next() ) { 
    System.out.println(rs1.getString(1));
    }
    

    有什么想法可以用来获取输入/输出参数?

    谢谢你的时间。

    4 回复  |  直到 8 年前
        1
  •  2
  •   Codo    15 年前

    select *
    from user_arguments
    where package_name = 'PACK' and object_name = 'PROCNAME';
    

        2
  •  4
  •   j0k gauthamp    13 年前

    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);
      int    columnPrecision      = rs.getInt(8);
      int    columnByteLength     = rs.getInt(9);
      short  columnScale          = rs.getShort(10);
      short  columnRadix          = rs.getShort(11);
      short  columnNullable       = rs.getShort(12);
      String columnRemarks        = rs.getString(13);
    
      System.out.println("stored Procedure name="+procedureName);
      System.out.println("procedureCatalog=" + procedureCatalog);
      System.out.println("procedureSchema=" + procedureSchema);
      System.out.println("procedureName=" + procedureName);
      System.out.println("columnName=" + columnName);
      System.out.println("columnReturn=" + columnReturn);
      System.out.println("columnDataType=" + columnDataType);
      System.out.println("columnReturnTypeName=" + columnReturnTypeName);
      System.out.println("columnPrecision=" + columnPrecision);
      System.out.println("columnByteLength=" + columnByteLength);
      System.out.println("columnScale=" + columnScale);
      System.out.println("columnRadix=" + columnRadix);
      System.out.println("columnNullable=" + columnNullable);
      System.out.println("columnRemarks=" + columnRemarks);
    }
    
        3
  •  3
  •   Jayan    12 年前
        4
  •  0
  •   Sualeh Fatehi    8 年前