【发布时间】:2016-12-15 04:29:29
【问题描述】:
有人能说说如何在 SOCI C++ 中处理 CLOB 数据类型吗?
我想知道如何使用 C++ SOCI 在 oracle 中读取 CLOB 数据列值。
我尝试在 SOCI 中使用 BLOB 类型,但它给出了错误。 Oracle 错误 932:预期的数据类型不一致 %s 得到了 %s 错误
【问题讨论】:
标签: c++ database oracle clob soci
有人能说说如何在 SOCI C++ 中处理 CLOB 数据类型吗?
我想知道如何使用 C++ SOCI 在 oracle 中读取 CLOB 数据列值。
我尝试在 SOCI 中使用 BLOB 类型,但它给出了错误。 Oracle 错误 932:预期的数据类型不一致 %s 得到了 %s 错误
【问题讨论】:
标签: c++ database oracle clob soci
我已经在谷歌测试中使用了以下功能,它对我有用,
// 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);
【讨论】:
将 clob 类型的数据绑定到 soci 语句时,使用 soci::long_string 而不是 std::string。因为,如果在使用 soci 将 clob 数据写入表时使用 std::string 绑定 clob 数据,soci 库会将该数据视为 varchar2 类型而不是 clob 类型。 varchar2 数据类型不能用于存储大数据。使用 std::string 类型容器将 clob 数据绑定到 soci 语句会导致数据丢失。
【讨论】: