Ни одно из этих решений не будет работать для нас (кроме отключения проверки схемы вообще). В итоге у нас был пропущенный матч в нашей версии Newtonsoft.json
. Наш AppConfig не получил правильное обновление:
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-7.0.0.0" newVersion="7.0.0.0" />
</dependentAssembly>
Решение состояло в том, чтобы исправить версию сборки до тот, который мы фактически развертывали
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-7.0.0.0" newVersion="10.0.0.0" />
</dependentAssembly>
Обычно я буду создавать курсор и выбирать каждую запись.
//***********************************************************************
// Main - Main Processing Routine
begsr Main;
exsr BldSqlStmt;
if OpenSqlCursor() = SQL_SUCCESS;
dow FetchNextRow() = SQL_SUCCESS;
exsr ProcessRow;
enddo;
if sqlStt = SQL_NO_MORE_ROWS;
CloseSqlCursor();
endif;
endif;
CloseSqlCursor();
endsr; // Main
Я добавил больше детали к этому ответу в сообщении на моем веб-сайте.
Как сказал Майк, итерация над курсором - лучшее решение. Я бы добавил, чтобы повысить производительность, Джеймс Р. Перкинс