我尝试使用 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