【问题标题】:SOCI clob data type in oracle c++oracle c++中的SOCI clob数据类型
【发布时间】:2016-12-15 04:29:29
【问题描述】:

有人能说说如何在 SOCI C++ 中处理 CLOB 数据类型吗?

我想知道如何使用 C++ SOCI 在 oracle 中读取 CLOB 数据列值。

我尝试在 SOCI 中使用 BLOB 类型,但它给出了错误。 Oracle 错误 932:预期的数据类型不一致 %s 得到了 %s 错误

【问题讨论】:

    标签: c++ database oracle clob soci


    【解决方案1】:

    我已经在谷歌测试中使用了以下功能,它对我有用,

    // insert clob
    std::string str = "string as clob";
    dbSession << "INSERT INTO CLOB_TABLE (ID, DATA) VALUES(:a, :b)",soci::use(1, "a"), soci::use(str, "b");    
    
    // read clob
    dbSession << "SELECT DATA FROM CLOB_TABLE WHERE ID = 1", soci::into(str);
    

    【讨论】:

      【解决方案2】:

      将 clob 类型的数据绑定到 soci 语句时,使用 soci::long_string 而不是 std::string。因为,如果在使用 soci 将 clob 数据写入表时使用 std::string 绑定 clob 数据,soci 库会将该数据视为 varchar2 类型而不是 clob 类型。 varchar2 数据类型不能用于存储大数据。使用 std::string 类型容器将 clob 数据绑定到 soci 语句会导致数据丢失。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-10-22
        • 2019-08-13
        • 2011-02-07
        • 2020-12-06
        • 1970-01-01
        • 2012-12-19
        相关资源
        最近更新 更多