oraclemodule.java

来自「RESIN 3.2 最新源码」· Java 代码 · 共 2,223 行 · 第 1/5 页

JAVA
2,223
字号
    } catch (Exception ex) {      log.log(Level.FINE, ex.toString(), ex);      return null;    }    return newArray;  }  /**   * Returns the next row from the result data as an associative or numeric array, or both   */  @ReturnNullAsFalse  public static ArrayValue oci_fetch_array(Env env,                                           @NotNull OracleStatement stmt,                                           @Optional("-1") int mode)  {    if (stmt == null)      return null;    if (mode == OCI_RETURN_LOBS)      throw new UnimplementedException("oci_fetch_array with OCI_RETURN_LOBS");    if (mode == OCI_RETURN_NULLS)      throw new UnimplementedException("oci_fetch_array with OCI_RETURN_NULLS");    try {      JdbcResultResource resource	= new JdbcResultResource(env, null, stmt.getResultSet(), null);      switch (mode) {      case OCI_ASSOC:        return resource.fetchArray(env, JdbcResultResource.FETCH_ASSOC);      case OCI_NUM:        return resource.fetchArray(env, JdbcResultResource.FETCH_NUM);      default: // case OCI_BOTH:        return resource.fetchArray(env, JdbcResultResource.FETCH_BOTH);      }    } catch (Exception ex) {      log.log(Level.FINE, ex.toString(), ex);      return null;    }  }  /**   * Returns the next row from the result data as an associative array   */  @ReturnNullAsFalse  public static ArrayValue oci_fetch_assoc(Env env,                                           @NotNull OracleStatement stmt)  {    try {      if (stmt == null)        return null;      JdbcResultResource resource	= new JdbcResultResource(env, null, stmt.getResultSet(), null);            ArrayValue arrayValue = resource.fetchArray(env, JdbcResultResource.FETCH_ASSOC);      return arrayValue;    } catch (Exception ex) {      log.log(Level.FINE, ex.toString(), ex);      return null;    }  }  /**   * Returns the next row from the result data as an object   */  public static Value oci_fetch_object(Env env,                                       @NotNull OracleStatement stmt)  {    try {      if (stmt == null)        return BooleanValue.FALSE;      JdbcResultResource resource	= new JdbcResultResource(env, null, stmt.getResultSet(), null);            return resource.fetchObject(env);    } catch (Exception ex) {      log.log(Level.FINE, ex.toString(), ex);      return BooleanValue.FALSE;    }  }  /**   * Returns the next row from the result data as a numeric array   */  @ReturnNullAsFalse  public static ArrayValue oci_fetch_row(Env env,                                         @NotNull OracleStatement stmt)  {    try {      if (stmt == null)        return null;      JdbcResultResource resource	= new JdbcResultResource(env, null, stmt.getResultSet(), null);            return resource.fetchArray(env, JdbcResultResource.FETCH_NUM);    } catch (Exception ex) {      log.log(Level.FINE, ex.toString(), ex);      return null;    }  }  /**   * Fetches the next row into result-buffer   */  public static boolean oci_fetch(Env env,                                  @NotNull OracleStatement stmt)  {    try {      if (stmt == null)        return false;      JdbcResultResource resource	= new JdbcResultResource(env, null, stmt.getResultSet(), null);      Value result = resource.fetchArray(env, JdbcResultResource.FETCH_BOTH);      stmt.setResultBuffer(result);      if (!(result instanceof ArrayValue)) {        return false;      }      ArrayValue arrayValue = (ArrayValue) result;      for (Map.Entry<String,Value> entry : stmt.getByNameVariables().entrySet()) {        String fieldName = entry.getKey();        Value var = entry.getValue();        Value newValue = arrayValue.get(StringValue.create(fieldName));        var.set(newValue);      }      // See oci_num_rows()      stmt.increaseFetchedRows();      return true;    } catch (Exception ex) {      log.log(Level.FINE, ex.toString(), ex);      try {        stmt.resetByNameVariables();      } catch (Exception ex2) {        log.log(Level.FINE, ex2.toString(), ex2);      }      return false;    }  }  /**   * Checks if the field is NULL   *   * @param stmt oracle statement   * @param fieldNameOrNumber field's index (1-based) or it's name   * @return TRUE if the field is null or FALSE otherwise.   */  public static boolean oci_field_is_null(Env env,                                          @NotNull OracleStatement stmt,                                          @NotNull Value fieldNameOrNumber)  {    if (stmt == null)      return false;    try {      ResultSet rs = stmt.getResultSet();      JdbcResultResource resource	= new JdbcResultResource(env, null, rs, null);      int fieldNumber = resource.getColumnNumber(fieldNameOrNumber, 1);      if (fieldNumber < 0)        return false;      ResultSetMetaData metaData = rs.getMetaData();      return metaData.isNullable(fieldNumber + 1) == ResultSetMetaData.columnNullable;    } catch (Exception ex) {      log.log(Level.FINE, ex.toString(), ex);      return false;    }  }  /**   * Returns the name of a field from the statement   */  public static Value oci_field_name(Env env,                                     @NotNull OracleStatement stmt,                                     @NotNull int fieldNumber)  {    try {      if (stmt == null)        return BooleanValue.FALSE;      JdbcResultResource resource	= new JdbcResultResource(env, null, stmt.getResultSet(), null);      return resource.getFieldName(env, fieldNumber);    } catch (Exception ex) {      log.log(Level.FINE, ex.toString(), ex);      return BooleanValue.FALSE;    }  }  /**   * Tell the precision of a field   */  @ReturnNullAsFalse  public static LongValue oci_field_precision(Env env,                                              @NotNull OracleStatement stmt,                                              @NotNull int field)  {    if (stmt == null)      return null;    try {      ResultSet rs = stmt.getResultSet();      ResultSetMetaData metaData = rs.getMetaData();      int precision = metaData.getPrecision(field);      return LongValue.create(precision);    } catch (Exception ex) {      log.log(Level.FINE, ex.toString(), ex);      return null;    }  }  /**   * Tell the scale of the field   */  @ReturnNullAsFalse  public static LongValue oci_field_scale(Env env,                                          @NotNull OracleStatement stmt,                                          @NotNull int field)  {    if (stmt == null)      return null;    try {      ResultSet rs = stmt.getResultSet();      ResultSetMetaData metaData = rs.getMetaData();      int precision = metaData.getScale(field);      return LongValue.create(precision);    } catch (Exception ex) {      log.log(Level.FINE, ex.toString(), ex);      return null;    }  }  /**   * Returns field's size   *   * @param stmt oracle statement   * @param fieldNameOrNumber field's index (1-based) or it's name   * @return the field's size   */  public static Value oci_field_size(Env env,                                     @NotNull OracleStatement stmt,                                     @Optional("-1") Value fieldNameOrNumber)  {    try {      if (stmt == null)        return BooleanValue.FALSE;      ResultSet rs = stmt.getResultSet();      JdbcResultResource resource	= new JdbcResultResource(env, null, rs, null);      int fieldNumber = resource.getColumnNumber(fieldNameOrNumber, 1);      return resource.getFieldLength(env, fieldNumber);    } catch (Exception ex) {      log.log(Level.FINE, ex.toString(), ex);      return BooleanValue.FALSE;    }  }  /**   * Tell the raw Oracle data type of the field   *   * @param field the field number (1-based)   */  public static int oci_field_type_raw(Env env,                                       @NotNull OracleStatement stmt,                                       int field)  {    try {      if (stmt == null)        return -1;      if (field <= 0)        return -1;      JdbcResultResource resource	= new JdbcResultResource(env, null, stmt.getResultSet(), null);      Value typeV = resource.getJdbcType(--field);      if (typeV instanceof LongValue) {        int type = typeV.toInt();        switch (type) {        case Types.BLOB:        case Types.LONGVARCHAR:        case Types.LONGVARBINARY:          type = SQLT_BLOB;          break;        case Types.CLOB:          type = SQLT_CLOB;          break;        case Types.BIGINT:        case Types.BIT:        case Types.BOOLEAN:        case Types.DECIMAL:        case Types.DOUBLE:        case Types.FLOAT:        case Types.INTEGER:        case Types.NUMERIC:        case Types.REAL:        case Types.SMALLINT:        case Types.TINYINT:          type = SQLT_NUM;          break;        default:          type = SQLT_CHR;        }        return type;      }    } catch (Exception ex) {      log.log(Level.FINE, ex.toString(), ex);    }    return -1;  }  /**   * Returns field's data type   */  public static Value oci_field_type(Env env,                                     @NotNull OracleStatement stmt,                                     int fieldNumber)  {    try {      if (stmt == null)        return BooleanValue.FALSE;      JdbcResultResource resource	= new JdbcResultResource(env, null, stmt.getResultSet(), null);      return resource.getFieldType(env, fieldNumber);    } catch (Exception ex) {      log.log(Level.FINE, ex.toString(), ex);      return BooleanValue.FALSE;    }  }  /**   *  Frees all resources associated with statement or cursor   */  public static boolean oci_free_statement(Env env,                                           @NotNull OracleStatement stmt)  {    try {      stmt.close();      return true;    } catch (Exception ex) {      log.log(Level.FINE, ex.toString(), ex);      return false;    }  }  /**   * Enables or disables internal debug output   */  public static void oci_internal_debug(Env env,                                        @NotNull int onoff)  {    throw new UnimplementedException("oci_internal_debug");  }  /**   * Copies large object   */  public static boolean oci_lob_copy(Env env,                                     @NotNull OracleOciLob lobTo,                                     @NotNull OracleOciLob lobFrom,                                     @Optional("-1") int length)  {    try {      return lobTo.save(env, lobFrom.read(env, length).toString(), 0);    } catch (Exception ex) {      log.log(Level.FINE, ex.toString(), ex);      return false;    }  }  /**   * Compares two LOB/FILE locators for equality   */  public static boolean oci_lob_is_equal(Env env,                                         @NotNull OracleOciLob lob1,                                         @NotNull OracleOciLob lob2)  {    try {      return lob1.equals(lob2);    } catch (Exception ex) {      log.log(Level.FINE, ex.toString(), ex);      return false;

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?