ich in Cold Fusion arbeite 11 * und ich erhalte den folgenden Fehler:Abfrage - String Literal Too Long ORA Fehler
ORA-01704: string literal too long.
First off, erhielt ich diesen Fehler und korrigiert sie, nachdem über mehrere Standorte suchen nach Ändern mein Code aus:
<cfquery datasource="#dsn#">
update paragraphs
set paragraph_text = #input#
where paragraph_id=#rs_d.paragraph_id#
</cfquery>
An:
<cfquery datasource="#dsn#">
update paragraphs
set paragraph_text = <cfqueryparam cfsqltype="CF_SQL_CLOB" value=#input#>
where paragraph_id=#rs_d.paragraph_id#
</cfquery>
Das funktionierte perfekt beheben. Jetzt bekomme ich den gleichen Fehler, aber anstatt cfquery zu verwenden, baue ich die SQL-Abfrage in eine Zeichenfolge, bevor ich damit arbeite. Das ist also, wie der Code aussieht:
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);
--- Ende Funktion
<cffunction name="cfstmt">
<cfargument name="sql">
<cfquery name="rs" datasource="#dsn#">
#PreserveSingleQuotes(sql)#
</cfquery>
</cffunction>
Die Ursache des Fehlers ist old_paragraph_text und new_paragraph_text. Ich habe mich gefragt, ob es möglich ist, eine Lösung vom Typ cfqueryparam in dieses Problem einzubinden, wie in dem vorherigen Problem/der Lösung, die ich einschloss. Ich habe versucht, es genau wie das erste zu integrieren, aber ich bekomme Kompilierungsfehler im Code. Irgendwelche Gedanken oder Tipps wären hilfreich, danke.
* versucht, es gerade wie die erste, aber ich bekomme Kompilierungsfehler * Können Sie einen Ausschnitt des Codes, den Sie ausprobiert? Es sollte gut funktionieren, solange Sie [Query' und 'addParam()'] verwenden (http://help.adobe.com/de_DE/ColdFusion/9.0/CFMLRef/WSe9cbe5cf462523a0693d5dae123bcd28f6d-7ffb.html) ODER den Code konvertiert haben zu cfml/cfquery. – Leigh
Dies ist, was ich versucht habe, sobald ich das Programm erneut ausführen kann, werde ich den Fehler, der aufgetreten ist, posten, könnte ich die Anweisung falsch formatieren. Ich werde versuchen, das wieder hinzuzufügen. @Leigh sql = sql & & "','"; –
Chris
Sie können cfqueryparam nicht als Teil einer solchen Variablen verwenden. Wenn Sie Abfrageparameter verwenden, müssen Sie auch Ihre einfachen Anführungszeichen nicht verdoppeln. –