sql >> データベース >  >> RDS >> PostgreSQL

libpqxx v12-ベクトル値をプリペアドステートメントに動的にバインドします(呼び出しの代わりに)

    pqxx::prepare::make_dynamic_params おそらくあなたの問題を解決するでしょう。それは私の問題を解決しました。このように使用します:

    for (size_t i = 0; i < buffSize; ++i)
    {
        auto element = dataBuffer.at(i);
        vector<string> vect;
        vect.reserve(3);
        vect.push_back(pqxx::to_string(element.rndNo));
        vect.push_back(element.timestamp);
        vect.push_back(element.uuid);
    
        work.exec_params(m_insertCommand, pqxx::prepare::make_dynamic_params(vect));
    }
    

    バージョン7.6.0 から dynamic_paramsは非推奨です。代わりにparamsを使用できます。新しいソリューションは次のとおりです。

    for (size_t i = 0; i < buffSize; ++i) 
    {
        auto element = dataBuffer.at(i);
        pqxx::params;
        params.reserve(4);
        params.append(pqxx::to_string(element.rndNo));
        params.append(element.timestamp);
        params.append(element.uuid);
        params.append(); // For example insert null variable
    
        work.exec_params(m_insertCommand, params);
    }
    



    1. 内側のSELECTに無効な識別子が含まれている場合、外側のSELECTを強制的に失敗させます

    2. 必要な場合にのみPDOに自動接続

    3. MySQLdbストアドプロシージャ出力パラメータが機能しない

    4. SQLServer2005のアトミックUPSERT