Я работаю в Cold Fusion 11 *, и я получаю следующее сообщение об ошибке:запросов - строковый литерал Too Long ORA Ошибка
ORA-01704: string literal too long.
Во-первых, я получил эту ошибку и исправить ее после того, как глядя на нескольких сайтах по меняю код из:
<cfquery datasource="#dsn#">
update paragraphs
set paragraph_text = #input#
where paragraph_id=#rs_d.paragraph_id#
</cfquery>
To:
<cfquery datasource="#dsn#">
update paragraphs
set paragraph_text = <cfqueryparam cfsqltype="CF_SQL_CLOB" value=#input#>
where paragraph_id=#rs_d.paragraph_id#
</cfquery>
Это исправление работало отлично. Теперь я получаю ту же ошибку, но вместо использования cfquery, я делаю запрос sql в строку перед тем, как работать с ним. Так вот как выглядит код:
sql = "insert into log (LOG_ENTRY_ID, program_id, paragraph_id, action, userid,";
sql = sql & " paragraph_text_old, paragraph_text_new, comment_id, current_program_status, new_program_status)";
sql = sql & " values (1 ," & program_id & ",";
if (paragraph_id neq ""){
sql = sql & paragraph_id & ",";
}
else{
sql = sql & " null,";
}
sql = sql & "'" & action & "',";
sql = sql & userid & ", '";
sql = sql & DoubleSingleQuotes(paragraph_text_old) & "','";
sql = sql & DoubleSingleQuotes(paragraph_text_new) & "',";
if (comment_id neq ""){
sql = sql & comment_id & ",";
}
else{
sql = sql & " null,";
}
if (current_program_status neq ""){
sql = sql & "'" & current_program_status & "',";
}
else{
sql = sql & " null,";
}
if (new_program_status neq ""){
sql = sql & "'" & new_program_status & "'";
}
else{
sql = sql & " null";
}
sql = sql & ")";
cfstmt(sql);
--- Конец функция
<cffunction name="cfstmt">
<cfargument name="sql">
<cfquery name="rs" datasource="#dsn#">
#PreserveSingleQuotes(sql)#
</cfquery>
</cffunction>
Причина ошибки old_paragraph_text и new_paragraph_text. Мне было интересно, можно ли включить решение типа cfqueryparam в эту проблему, как в предыдущей проблеме/решении, которое я включил. Я попытался включить его прямо как первый, но я получаю ошибки компиляции в коде. Любые мысли или советы были бы полезны, спасибо.
* попробовал включить его прямо как первый, но я получаю ошибки компиляции * Можете ли вы опубликовать фрагмент кода, который вы пробовали? Он должен работать нормально, пока вы используете ['Query' и' addParam() '] (http://help.adobe.com/en_US/ColdFusion/9.0/CFMLRef/WSe9cbe5cf462523a0693d5dae123bcd28f6d-7ffb.html) ИЛИ преобразовали код к cfml/cfquery. – Leigh
Это то, что я пробовал, как только я снова запустил программу. Я отправлю сообщение об ошибке, я мог бы форматировать заявление неправильно. Я попытаюсь снова добавить это. @Leigh sql = sql & & "','"; –
Chris
Вы не можете использовать cfqueryparam как часть такой переменной. Кроме того, при использовании параметров запроса вам не нужно удваивать одиночные кавычки. –