didn't工作,我試圖通過ODBC與ibatis的腳本運行(http://ibatis.apache.org/docs/java/dev/com/ibatis/common/jdbc/ScriptRunner.html)While循環TSQL在Java中
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執行的Microsoft SQL Server 2012腳本。每個陳述都與「;」分開。大部分的腳本工作,不會有問題,即腳本內循環沒有得到正確執行。在下面的例子中,應該創建一個具有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 @[email protected]+1
END
更好地工作,但它也只產生715行,而不是1000, 並引發錯誤:」錯誤執行:INSERT INTO looptest SELECT top 1000 row_number()over(order by(select 0))FROM sys.columns 。原因:java.sql.SQLException:[Microsoft] [ODBC SQL Server Driver] [SQL Server]損害PRIMARY KEY-restriktion' PK__looptest__621ECEB16718A719'。Keyvalue(1)使用雙精度。 – Jaran
我已編輯帖子。立即試用 – Madhivanan
你能截斷表並嘗試再次執行代碼嗎? – Madhivanan