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 + -
显示快捷键?