Tag: oracle11g

从Java中的Oracle存储过程中获取ResultSet

我一直在浏览论坛中与我的问题相关的很多post,但我没有帮助我,所以我发布了我的问题。 我在Oracle(11g)中有一个SP,它被假定为返回结果集。 SP如下所示: CREATE OR REPLACE PROCEDURE testProc ( tableName IN VARCHAR2, INFORMATION OUT SYS_REFCURSOR ) AS sqlQuery varchar2(1000); BEGIN sqlQuery := ‘SELECT ID||”|”||Name||”|”||Surname FROM ‘||tableName; OPEN INFORMATION FOR sqlQuery; END GETVALIDATIONPECLOG; 我从java中调用它的方式是 … CallableStatement cs = null cs = connection.prepareCall(“{call getvalidationpeclog(?,?)}”); cs.setString(1, table); cs.registerOutParameter(2, OracleTypes.CURSOR); System.out.println(“AS: ” + cs.execute()); //Returns false rs = (ResultSet) […]

TRIGGER AUTO_NUM_GEN编译警告:执行完成并发出警告

我在oracle sql developer中使用oracle 11g express作为我的数据库运行以下语句。 我尝试创建触发器时只会遇到问题。 我收到消息 – TRIGGER AUTO_NUM_GEN compiled Warning: execution completed with warning SQL- CREATE TABLE myschema.mytable (mynums NUMBER PRIMARY KEY); CREATE SEQUENCE myschema.seq_of_nums MINVALUE 1 START WITH 1 INCREMENT BY 1 CACHE 10; CREATE OR REPLACE TRIGGER myschema.auto_num_gen BEFORE INSERT ON myschema.mytable FOR EACH ROW BEGIN SELECT seq_of_nums.nextval INTO :new.mynums FROM […]

用oracle预处理语句执行批处理

我尝试使用以下代码添加批量预处理语句: Connection c = … PreparedStatement ps = c.prepareStatement(query1); ps.setObject(….) … ps.addBatch(query2); // SqlException : Unsupported feature 是不是oracle jdbc驱动支持批处理,或者我做错了什么? 我正在使用oracle瘦驱动程序。 MANIFEST.MF Implementation-Version: 11.2.0.1.0 。 java.sql.SQLException: Unsupported feature at oracle.jdbc.driver.OraclePreparedStatement.addBatch(OraclePreparedStatement.java:9803) at oracle.jdbc.driver.OracleStatementWrapper.addBatch(OracleStatementWrapper.java:285) at org.jboss.resource.adapter.jdbc.WrappedStatement.addBatch(WrappedStatement.java:731) at

通过JDBC瘦驱动程序(Domino Java)连接Oracle 11g时出现问题

我无法使用以下代码远程连接Oracle 11数据库。 但是,如果我尝试连接安装在我的计算机上的Oracle 9数据库,相同的代码工作正常。 缺什么 ? (我没有收到任何错误,Lotus Notes挂起) import lotus.domino.*; import java.sql.*; import oracle.jdbc.*; public class JavaAgent extends AgentBase { public void NotesMain() { try { Session session = getSession(); AgentContext agentContext = session.getAgentContext(); Database db = agentContext.getCurrentDatabase(); //Calling connection method Connection conn= getOracleConnection(db); if(conn!=null){ System.out.println(“Connected..”); } else { System.out.println(“There is a problem in connecting […]

列索引无效,使用PreparedStatement进行更新

我正在使用PreparedStatement更新表 以下代码完美无缺 pst = conn.prepareStatement(“UPDATE playjdbc SET jlname =’javafx10new’ WHERE jfname = ‘java10′”); int i = pst.executeUpdate(); 但是当我尝试这样的时候它会抛出exception pst = conn.prepareStatement(“UPDATE playjdbc SET jlname =’javafx10new’ WHERE jfname =?”); pst.setString(2, “java10”); // yeah second column is jfname int i = pst.executeUpdate(); 堆栈跟踪 : java.sql.SQLException: Invalid column index at oracle.jdbc.driver.OraclePreparedStatement.setStringInternal(OraclePreparedStatement.java:5330) at oracle.jdbc.driver.OraclePreparedStatement.setString(OraclePreparedStatement.java:5318) at oracle.jdbc.driver.OraclePreparedStatementWrapper.setString(OraclePreparedStatementWrapper.java:282) at com.indus.database.EmployeeDTO.updateData(EmployeeDTO.java:114)

在Oracle JDBC中是否可以批量存储过程调用并检索OUT参数?

我在Oracle 11g数据库中有一个存储过程,如f(a IN,b IN,c OUT)。 我想在批处理模式下从JDBC调用它,然后读取所有OUT变量。 这可能吗? 到目前为止我有这个 CallableStatement statement = connection.prepareCall(“f(?, ?, ?)”); for(Item i : items) { int i = 0; statement.setString(++i, item.getA()); statement.setString(++i, item.getB()); statement.registerOutParameter(++i, Types.NUMERIC); statement.addBatch(); } statement.executeBatch(); int[] answers = ? 谢谢

SQL Developer错误无法找到Java虚拟机

安装Oracle 11g客户端后,当我尝试运行SQL Developer它要求我给它java.exe路径。 因为我不知道我给它错误的程序文件java安装路径。 我后来发现我应该在oracle文件夹中给出了java.exe的路径。 现在每次运行它都不会问我java.exe路径,但显示下一个错误: Unable to find Java Virtual Machine 。 我想要纠正这个问题我需要在oracle文件夹中给它提供Java路径,但是如何更改我已经给出的路径?

警告:注册Oracle JDBC Diagnosability MBean时出错

使用Oracle 11g ojdbc6.jar时出现以下错误: WARNING: Error while registering Oracle JDBC Diagnosability MBean. java.lang.NoSuchMethodError: javax.management.StandardMBean.(Ljava/lang/Class;Z)V at oracle.jdbc.driver.OracleDiagnosabilityMBean.(OracleDiagnosabilityMBean.java:34) at oracle.jdbc.driver.OracleDriver.registerMBeans(OracleDriver.java:342) at oracle.jdbc.driver.OracleDriver$1.run(OracleDriver.java:199) 在从许多论坛和博客调查后,我们还没有找到任何最终的解决方案。 因此,我们希望在此处分享解决方法。

在JDBC连接上切换用户

我正在编写一个Java JDBC数据库应用程序,它连接到Oracle 11g数据库并使用c3p0连接池。 出于示例的目的,我有3个数据库用户DEFAULT,TOM和BILL。 c3p0使用DEFAULT数据库用户打开所有池化连接。 我想从c3p0中检索一个池连接,并将Connection的用户更改为BILL而不是DEFAULT。 是否可以在JDBC中执行此操作而不与数据库建立新连接? 我已经尝试过以下操作: connect BILL/password; 但这不起作用。 我说错了 java.sql.SQLException: ORA-00900: invalid SQL statement 还有其他选择吗? 是否有与上下文设置或切换有关的内容可以促进我正在尝试做的事情? 谢谢!

如何检查Oracle中的JDK版本?

我们的Oracle数据库中有一个Java类,最近该java类中的一行代码引发了错误: static BASE64Encoder B64 = new BASE64Encoder(); 我们看到了错误 java.lang.ExceptionInInitializerError 在这行代码上。 我不确定数据库端有什么变化,因为我们没有SYS权限或访问主机。 我希望检查运行Oracle DB的JDK版本 – Oracle Database 11g企业版11.2.0.3.0版 – 64位生产。 谢谢。