我想执行下面的 SQL 脚本,因此我使用了 ibatis Script Runner
Connection "con = DriverManager.getConnection("jdbc:odbc:Database")"
ScriptRunner sr = new ScriptRunner(con, true, false);
// Give the input file to Reader
Reader reader = new BufferedReader(new FileReader(aSQLScriptFilePath));
// Execute script
sr.runScript(reader);
但问题是,While 循环不会被完全执行。我指出问题的出现是因为 Script Runner 没有等到 while 循环完全完成。所以只创建了 386 行而不是 1000 行。我使用 Java 语句执行方法(http://docs.oracle.com/javase/6/docs/api/java/sql/Statement.html)遇到了同样的问题:
stmnt.execute("DECLARE @variable int = 1 WHILE (@variable<=1000) BEGIN INSERT INTO BatchTest2 SELECT @variable SET @variable=@variable+1 END" );
但如果我设置
Thread.sleep(5000);
在 stmnt.execute 后面,while 循环完全完成,我得到了我想要的 1000 行。所以我的问题是,是否可以使用 Thread.sleep 执行完整的 While 循环?
先感谢您!
IF OBJECT_ID('test') IS NOT NULL
DROP TABLE test;
CREATE TABLE test(
spalte1 int PRIMARY KEY NOT NULL);
DECLARE @variable int = 1
WHILE (@variable<=1000)
BEGIN
INSERT INTO test
SELECT @variable
SET @variable=@variable+1
END