【发布时间】:2016-02-25 07:02:11
【问题描述】:
我尝试执行此代码以在 Oracle 表中生成随机数据:
DriverManager.registerDriver(new oracle.jdbc.OracleDriver());
// Connect to the database
Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe", "admin", "qwerty");
PreparedStatement pstmt
= conn.prepareStatement("BEGIN "
+ "FOR loop_counter IN 1..10 "
+ "LOOP "
+ "INSERT INTO EVENTS (EVENTID, SOURCE, TYPE, EVENT_DATE, DESCRIPTION) "
+ "VALUES (loop_counter, loop_counter, 'warning', "
+ "TO_DATE(TRUNC(DBMS_RANDOM.VALUE(TO_CHAR(DATE '2000-01-01','J') ,TO_CHAR(DATE '9999-12-31','J'))),'J'), "
+ "DBMS_RANDOM.string('x',15)); "
+ "END LOOP; "
+ "COMMIT; "
+ "END; ");
pstmt.execute();
pstmt.close();
conn.close();
此代码在 PL/SQL deloper 中成功执行,但由于某种原因,它在 JUnit 测试执行中挂起。你知道为什么吗?
【问题讨论】:
-
你说的挂起是什么意思?
-
JUint 未执行。我刚刚看到输出消息测试开始了。
-
尝试找出究竟是哪个语句挂起。您可以在每条语句后添加
System.out.println或记录以找出答案。 -
另外,您可以将该 SQL 代码存储在一个变量中,将其打印出来或记录下来,然后在您的数据库上执行该输出,以确保您的 Java 代码执行的 SQL 完全相同.
-
该代码是否在单个循环中?开始时在循环中创建连接非常繁重。
标签: java oracle junit oracle11g