【发布时间】:2013-11-04 08:58:04
【问题描述】:
我尝试使用 ibatis Script Runner(http://ibatis.apache.org/docs/java/dev/com/ibatis/common/jdbc/ScriptRunner.html) 在 odbc 上执行 Microsoft SQL Server 2012 脚本
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);
“aSQLScriptFilePath”是一个长而复杂的sqlscript。每个语句都用“;”分隔。大多数脚本都有效,但存在一个问题,即脚本内的 while 循环没有正确执行。在下面的示例中,应该创建一个包含 1000 行的表,但它在 while 循环内仅生成 386 行。其他所有内容都将正确执行(除了 while 循环)。我也没有在Java中得到错误。我不明白为什么 while 循环没有正确执行。如果我直接在 Microsoft SQL Server 2012 中尝试脚本,一切正常。我已经尝试过本地 java 方法 statement.execute(SQLScriptconvertedInOne String) 和 executeBatch() 都有相同的问题,它们在 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 sql-server tsql sql-server-2012