C++ コードからストアド プロシージャを呼び出すと、float パラメーターが 34.555 => 34,555 のように分割され、パラメーターの数が一致しないためエラーが発生します。
これが_CommandPtrにパラメーターを追加する方法です
...
VARIANT VtLon = {0};
VtLon.vt = VT_NULL;
if(TargInf.dwFields & TI_FIELD_LON )
{
VtLon.vt = VT_R8;
VtLon.dblVal = TargInf.dLongitude;
}
param = pCommand_LogNewEvent->CreateParameter( _bstr_t( L"lon" ), adDouble, adParamInput, sizeof( double ), VtLon );
pCommand_LogNewEvent->Parameters->Append( param );
...
SQL サーバーのデフォルト言語をロシア語から英語に変更したところ、問題はなくなりました。しかし、そのようなグローバル設定なしで管理する方法が必要です。