ibatis スクリプト ランナー ( 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