【发布时间】:2013-11-04 13:00:41
【问题描述】:
我想执行下面的SQL Script,所以我使用了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
【问题讨论】:
标签: java sql-server tsql sql-server-2012