ORA-01704使用Code Igniter时字符串文字太长

时间:2012-02-01 03:59:03

标签: php oracle codeigniter ora-01704

目前,我正在使用Code Igniter和Oracle数据库开发Web应用程序。当我尝试为CLOB列插入long char时,我收到错误

  

ORA-01704字符串文字太长

如何在CI中解决此问题?

说我在这样的oracle中有一个表

CREATE TABLE test(
   ID NUMBER,
   SUMMARY CLOB
)

当我尝试使用CI通过此命令插入一行(Summary列超过4000 cahr)时

$this->db->set('ID','123');
$this->db->set('SUMMARY','Very long text is here');
$this->db->insert('test');

我得到了string literal is too long

我使用Oracle 10g

1 个答案:

答案 0 :(得分:3)

ORA-01704: string literal too long
Cause: The string literal is longer than 4000 characters.
Action: Use a string literal of at most 4000 characters.
Longer values may only be entered using bind variables.

当插入/更新长度超过4000个字符的CLOB值时,需要使用绑定参数。

我不是Code Igniter用户,但是我们的代码Igniter的数据库抽象类显示它doesn't use prepared statements and real variable binding(顺便说一句:我不会因为这个而使用Code Igniter框架......)。

因此,结论是你无法使用Code Igniter的数据库交互助手做你想做的事情,至少不需要重写一些代码。我相信在这种特殊情况下,您必须使用"pure" PDO interface