Perhaps I'm on the wrong track, but... You seem to be updating CLOBs, so try doing something like:
select question_id from survey_questions
where question_id = :question_id
for update of question_text
Note that
question_text
above is not a bind variable, you're just telling Oracle that you're about to update a CLOB column. You then proceed with your update:
update survey_questions
set question_text = :question_text
where question_id = :question_id
I'd bet that your unmodified code works like a charm with varchar2(4000), but LOBs are different... Let us know.