gpt4 book ai didi

java - 从存储库中选择内容,其中 id = ?用于更新

转载 作者:行者123 更新时间:2023-12-01 18:56:45 25 4
gpt4 key购买 nike

以上查询在 Oracle 10g 上成功运行。现在我必须使用 SQLSERVER 2005 实现相同的查询(应用程序)。

当我在 SQLSERVER 2005 中运行上述查询时,出现错误“FOR UPDATE 子句仅允许用于 DECLARE CURSOR”。

SQLSERVER 2005 支持上述查询吗?或者有什么替代方案吗?

目标:

基本上我正在更新我的应用程序中的文档。我正在使用分块更新,每次都必须将旧内容附加到新内容。

代码:

Blob bb = getDataAccess().executeScalar( "select content from Repository where id = ? for update", getId());
os = bb.setBinaryStream(startIndex + 1);

while ((read = content.read(buf)) > 0) {
os.write(buf, 0, read);
startIndex += read;

//commit every megabate or every second so upload progress is visible
//and we don't lose more than 1MB if something happens.

if (startIndex - lastStartIndex > bufSize || (new Date().getTime() - lastUpdateTime) > UPDATE_INTERVAL) {
os.close();
os = null;
getDataAccess().executeUpdate("UPDATE Repository SET LastChunkSaved = CURRENT_TIMESTAMP WHERE ID = ?", getId());
getDataAccess().commit();

lastStartIndex = startIndex;
lastUpdateTime = new Date().getTime();

bb = getDataAccess().executeScalar( "select content from Repository where id = ? for update", getId());
os = bb.setBinaryStream(startIndex + 1);

totalSaved += startIndex - lastStartIndex;
}
}
os.close();

最佳答案

我遇到了类似的问题,对我来说,将“SelectMethod=Cursor”添加到连接 URL 中很有帮助:

jdbc:sqlserver://<server>\SQLEXPRESS:1433;databaseName=<db>;SelectMethod=Cursor;integratedSecurity=true;

实际上我不太容易找到它,所以我将它添加到这里,这样我可以更快地找到它。

关于java - 从存储库中选择内容,其中 id = ?用于更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13717627/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com