Sorry, подниму здесь простой вопрос, чтобы не создавать новую тему.
Недавно обнаружил, что Statement.executeUpdate не возвращает ничего для простого update. Хотя в документации про return value сказано "An updated row count; otherwise, 0 (zero) for SQL statements that return nothing."
X++:
server static void test()
{
ResultSet rs;
str sQuery;
int qtyUpdated;
;
// так, параметры вывода сообщений
sQuery = "SELECT CASE WHEN (512 & @@OPTIONS) = 512 THEN 'ON' ELSE 'OFF' END AS a1";
new SQLStatementExecutePermission(sQuery).assert();
rs = new Connection().createStatement().executeQuery(sQuery);
if (rs.next())
info(rs.getString(1));
CodeAccessPermission::revertAssert();
sQuery = "update [dbo].[TestTbl] set RecVersion = RecVersion+1;";
new SQLStatementExecutePermission(sQuery).assert();
// проверим, что никто не грохнул запись, пока мы мялись, как школьники у борделя
qtyUpdated = new Connection().createStatement().executeUpdate(sQuery);
info(int2str(qtyUpdated));
CodeAccessPermission::revertAssert();
}
При этом фактическое обновление данных происходит, и транзакция фиксируется.
DAX2009 на ss2012r2, всё стоковое с последними хотфиксами и kb. Хотя в трёшке тот же эффект.
Это норм или что-то где-то надо туда-сюда?