ORA-01704 String literal too long when using with Code Igniter

2.9k Views Asked by At

Currently I am develop web app using Code Igniter and Oracle database. When I try to insert long char for CLOB column I get error

ORA-01704 String literal too long

How to fix this in CI?

Say I have a table in oracle like this

CREATE TABLE test(
   ID NUMBER,
   SUMMARY CLOB
)

When I try to insert a row (with more than 4000 cahr for SUMMARY column) using CI by this command

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

I got the string literal is too long

I use Oracle 10g

1

There are 1 best solutions below

7
On BEST ANSWER
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.

When inserting/updating CLOB values longer than 4000 characters it's needed to use binded parameters.

I'm not Code Igniter user but examinig Code Igniter's database abstraction classes shows that it doesn't use prepared statements and real variable binding (BTW: I wouldn't use Code Igniter framework because of this...).

So, the conclusion is you can't do what you want to do using Code Igniter's helpers for database interaction, at least without rewriting some of its code. I believe that in this particular case you must use "pure" PDO interface.