Stored procedures SQL Server存储过程插入长字符串时出错:字符串后有未闭合的引号

Stored procedures SQL Server存储过程插入长字符串时出错:字符串后有未闭合的引号,stored-procedures,coldfusion,sqldatatypes,Stored Procedures,Coldfusion,Sqldatatypes,我正在尝试使用存储过程将JSON格式的长字符串(即#jsonLayoutProperties#)插入MS SQL Server表中。字符串可以很长,例如10000个字符+。我应该在存储过程中使用哪个cfsqltypecf_sql\u longvarchar似乎是唯一的选项,似乎没有映射到nvarchar(max)的cfsqltype 我得到的错误如下。字符串似乎正在被截断。欢迎任何帮助 错误: <cfstoredproc datasource="docs" procedure="Updat

我正在尝试使用存储过程将JSON格式的长字符串(即
#jsonLayoutProperties#
)插入MS SQL Server表中。字符串可以很长,例如10000个字符+。我应该在存储过程中使用哪个
cfsqltype
cf_sql\u longvarchar
似乎是唯一的选项,似乎没有映射到
nvarchar(max)
cfsqltype

我得到的错误如下。字符串似乎正在被截断。欢迎任何帮助

错误:

<cfstoredproc datasource="docs" procedure="UpdateLayout">
    <cfprocparam cfsqltype="cf_sql_varchar" type="in" value="#Session.Userdata['ID']#">                 <!--- @AccountID --->
    <cfprocparam cfsqltype="cf_sql_integer" type="in" value="#ObjectID#">                               <!--- @ObjectID --->
    <cfprocparam cfsqltype="cf_sql_longvarchar" type="in" value="#jsonLayoutProperties#">               <!--- @Properties --->
    <cfprocparam cfsqltype="cf_sql_varchar" type="in" value="0">                                        <!--- @Revision --->
    <cfprocparam cfsqltype="cf_sql_integer" type="in" value="#Session.Userdata['ID']#">                 <!--- @UpdatedID --->
    <cfprocparam cfsqltype="cf_sql_integer" type="inout" value="0" variable="LayoutID">                 <!--- @ID --->
</cfstoredproc>
执行数据库查询时出错

[Macromedia][SQLServer JDBC驱动程序][SQLServer]未关闭的引号 在字符串后面

CFStoredproc:

<cfstoredproc datasource="docs" procedure="UpdateLayout">
    <cfprocparam cfsqltype="cf_sql_varchar" type="in" value="#Session.Userdata['ID']#">                 <!--- @AccountID --->
    <cfprocparam cfsqltype="cf_sql_integer" type="in" value="#ObjectID#">                               <!--- @ObjectID --->
    <cfprocparam cfsqltype="cf_sql_longvarchar" type="in" value="#jsonLayoutProperties#">               <!--- @Properties --->
    <cfprocparam cfsqltype="cf_sql_varchar" type="in" value="0">                                        <!--- @Revision --->
    <cfprocparam cfsqltype="cf_sql_integer" type="in" value="#Session.Userdata['ID']#">                 <!--- @UpdatedID --->
    <cfprocparam cfsqltype="cf_sql_integer" type="inout" value="0" variable="LayoutID">                 <!--- @ID --->
</cfstoredproc>

这可能不是类型问题

Unclosed quotation mark after the character string.

对我来说,这意味着你可以在你的字符串中使用未替换的引号。你能检查一下吗?

这个变量是有效的json(isJSON=YES),所以我认为字符串本身很好。这个错误是由(我想)cf\u sql\u longvarchar只向数据库传递前n个字符引起的。@Paul您试过使用cf\u sql\u NVARCHAR吗?在重读之后,我看到您使用了nvarchar而不是VARCHAR。我尝试了cf_sql_nvarchar、cf_sql_longvarchar、cf_sql_text和实际上的“cf_sql_max”,只是为了看看发生了什么,所有这些都具有相同的原始结果。您是否成功地使用了较短的字符串?我会尝试使用短的字符,然后使用一种有效的数据类型,并尝试确定它的中断长度既然procparams应该转义撇号,为什么您会认为它是一个未转义字符?(编辑)如果您在SSMS中运行execute过程(使用相同的值),它是否成功执行?RE:似乎没有映射到nvarchar(max)的cfsqltype,这几乎是您所猜测的:
cf\u sql\u longnvarchar
(注意中间的“n”表示nvarchar)