Tag: oracle

使用JDBC连接从oracle返回插入语句的ROWID参数

我似乎无法获得正确的魔法组合来完成这项工作: OracleDataSource ods = new oracle.jdbc.pool.OracleDataSource(); ods.setURL(“jdbc:oracle:thin:app_user/pass@server:1521:sid”); DefaultContext conn = ods.getConnection(); CallableStatement st = conn.prepareCall(“INSERT INTO tableA (some_id) VALUES (1) RETURNING ROWID INTO :rowid0”); st.registerReturnParameter(1, OracleTypes.ROWID); st.execute(); 我得到的错误是“违反协议”。 如果我改为registerOutParameter(),我会收到通知,说明我没有注册所有的返回变量。 如果我将语句包装在PL / SQL中开始; 结束; 然后我使用常规的registerOutParameter()调用得到参数。 我真的更愿意避免在PL / SQL中包装所有的insert语句 – 那么上面缺少什么?

ORA-12516,TNS:监听器找不到可用的处理程序

我的错误: java.sql.SQLException: Listener refused the connection with the following error: ORA-12516, TNS:listener could not find available handler with matching protocol stack The Connection descriptor used by the client was: //10.2.5.21:9001/XE at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java :112) at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java :261) at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:387) at oracle.jdbc.driver.PhysicalConnection.(PhysicalConnection.java: 414) at oracle.jdbc.driver.T4CConnection.(T4CConnection.java:165) at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtensio n.java:35) at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:801) at oracle.jdbc.pool.OracleDataSource.getPhysicalConnection(OracleDataSou rce.java:297) at oracle.jdbc.pool.OracleDataSource.getConnection(OracleDataSource.java :221) at […]

如何解决Hibernateexception的原因“调用setter时发生了IllegalArgumentException”?

当我的程序试图从数据库中按名称加载用户时IllegalArgumentException occurred while calling setter Hibernate抛出的IllegalArgumentException occurred while calling setter时IllegalArgumentException occurred while calling setter偶然exceptionIllegalArgumentException occurred while calling setter的原因? 我是否错误地将表User列USER_RV映射到类Integer而不是BigDecimal或其他整数类型? 请注意,同一应用程序将其他表中的NUMBER列映射到Integer对象,但在使用这些表中的行填充对象时,Hibernate 不会抛出此exception。 另请注意,该程序仅为用户缓存启用RMI缓存复制 。 这个exception可能与缓存复制有关吗? 它是Ehcache或Hibernate中的错误吗? Caused by: org.springframework.orm.hibernate3.HibernateSystemException: IllegalArgumentException occurred while calling setter of com.db.spgit.abstrack.model.User.rv; nested exception is org.hibernate.PropertyAccessException: IllegalArgumentException occurred while calling setter of com.db.spgit.abstrack.model.User.rv at org.springframework.orm.hibernate3.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:676) at org.springframework.orm.hibernate3.HibernateAccessor.convertHibernateAccessException(HibernateAccessor.java:412) at org.springframework.orm.hibernate3.HibernateTemplate.doExecute(HibernateTemplate.java:424) at org.springframework.orm.hibernate3.HibernateTemplate.executeWithNativeSession(HibernateTemplate.java:374) at […]

从Oracle存储过程访问Web服务

是否有人从Oracle存储过程成功访问过Web服务? 如果是这样,它是Java存储过程吗? PL / SQL存储过程? 我有什么理由不尝试从存储过程中访问WS? 这是我到目前为止发现的一些参考文献 数据库Web服务 从Java存储过程调用外部Web服务 ..澄清一下,这是针对SOAP调用的

Spring JDBC支持和大型数据集

当使用各种JDBC模板方法之一时,我对如何迭代/滚动大型结果集(不适合内存)感到困惑。 即使没有直接暴露Iterable接口,我至少也会期望在查询执行时调用RowCallbackHandler的实例, 而不是在它完成之后(或堆overfloats)。 我确实看过这个 (虽然在精神上类似于这篇关于堆栈溢出的post ,但我没有改变任何内容)和春季论坛中的这篇文章。 后者似乎建议在游标获取数据时确实应该调用回调处理程序。 然而,我的测试显示没有这样的行为 该数据库是Oracle10g。 我使用的是11.1.0.7.0-Production驱动程序和Spring 2.5.6.SEC01。 任何人都想知道如何迭代结果集,最好是保留RowMapper等的映射逻辑?

oracle jdbc驱动程序版疯狂

为什么Oracle为每个(!)数据库版本提供了不同的(!)版本的JDBC驱动程序,例如ojdbc14.jar? 这些文件都有不同的大小,因此可能是不同的内容。 背景: 保存数据时,我们得到一个随机且看似不可复制的错误“无效数字”(我们猜测它是时间戳)。 但这不是任何特别的声明。 大多数时候,它可以节省很多。 每月只需​​一次无害的陈述就会失败。 所以我仔细研究了Oracle的下载站点,并注意到尽管文件共享相同的名称,但没有一个文件大小匹配。 我们的产品运行在由客户维护的数据库上,即客户端运行的任何版本和补丁都是它。 那么我们使用什么驱动程序? 最新的(Oracle 11g) – 尽管它通常是9i和 10g数据库? 为什么他们不将所有版本链接到相同的“一个驱动程序适合所有”文件? 或者是否有微小差异导致像随机错误这样的影响? 编辑:我错了9i数据库。

如何将任意参数发送到Oracle触发器?

目的是向Web应用程序中的当前用户ID等触发器发送额外信息。 由于使用了连接池,并且所有连接都使用相同的用户ID,如何将原始Web用户ID传递给触发器? 这需要在不触及应用程序代码的情况下实现。 它是一个基于Java的应用程序。 约翰

Spring的存储过程 – 从过程返回的结果始终为空

我正在使用Spring的JdbcTemplate和StoredProcedure类。 我无法让存储过程类为我工作。 我在oracle数据库上有一个存储过程。 它的签名是 CREATE OR REPLACE PROCEDURE PRC_GET_USERS_BY_SECTION (user_cursor OUT Pkg_Types.cursor_type , section_option_in IN Varchar2 , section_in IN Varchar2) AS …. 哪里 TYPE cursor_type IS REF CURSOR; 我已创建以下存储过程类以从oracle过程获取信息 private class MyStoredProcedure extends StoredProcedure { public MyStoredProcedure(JdbcTemplate argJdbcTemplate) { super(argJdbcTemplate, “PRC_GET_USERS_BY_SECTION”); declareParameter(new SqlOutParameter(“output”, OracleTypes.CURSOR)); declareParameter(new SqlParameter(“input1”, Types.VARCHAR)); declareParameter(new SqlParameter(“input2”, Types.VARCHAR)); compile(); } public Map execute() […]

如何在Java中将SYS连接到Oracle?

我收到此错误: java.sql.SQLException: ORA-28009: connection as SYS should be as SYSDBA or SYSOPER 怎么修? (我需要是SYS )。 谢谢。

ResultSet#getDate()语义

我们从ojdbc6-11.2.0.3.0迁移到ojdbc6-11.2.0.3.0 ,并观察到ResultSet#getDate()语义的变化。 以前,通过根据java.sql.Date指定的合同将小时,分钟,秒和毫秒设置为零,返回的java.sql.Date将被“规范化”。 使用ojdbc7不再是这种情况, java.sql.Date具有根据数据库上的值设置的小时,分​​钟,秒和毫秒。 我查看了ResultSet#getDate()的Javadoc,并没有明确说明哪个行为是正确的。 我会假设旧的行为符合规范的意图。 我对吗? 我们遇到过驱动程序错误吗?