【问题标题】:SQL Server Stored procedure error inserting long strings: Unclosed quotation mark after the character stringSQL Server存储过程插入长字符串时出错:字符串后引号未闭合
【发布时间】:2017-02-27 22:15:16
【问题描述】:

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

我得到的错误如下。看来该字符串正在被截断。非常欢迎任何帮助。

错误:

执行数据库查询时出错。

[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>

【问题讨论】:

  • (编辑)如果您在SSMS中运行执行过程(具有相同的值),它是否执行成功? RE:似乎没有映射到 nvarchar(max) 的 cfsqltype 有,而且几乎是你猜到的:cf_sql_longnvarchar(注意中间的“n”代表 n varchar)

标签: stored-procedures coldfusion sqldatatypes


【解决方案1】:

这可能不是类型问题。

Unclosed quotation mark after the character string.

对我来说意味着你的字符串中可以有未转义的引号。你能检查一下吗?

【讨论】:

  • 变量是有效的 json (isJSON = YES) 所以我认为字符串本身是好的。该错误是由于 cf_sql_longvarchar 仅将前 n 个字符传递给数据库而引起的(我认为)。
  • @Paul 你试过用 CF_SQL_NVARCHAR 代替吗?重读后发现你用的是nvarchar而不是varchar
  • 我已经尝试过 cf_sql_nvarchar、cf_sql_longvarchar、cf_sql_text 和“cf_sql_max”,只是为了看看发生了什么,结果都是一样的。
  • 你用更短的字符串成功了吗?我会尝试较短的数据类型,然后尝试使用有效的数据类型,并尝试确定它中断的长度
  • 鉴于 procparams 应该转义撇号,为什么你会认为它是一个未转义的字符?
猜你喜欢
  • 1970-01-01
  • 2015-05-08
  • 2013-06-05
  • 2014-04-22
  • 1970-01-01
  • 1970-01-01
  • 2015-12-30
  • 1970-01-01
  • 2021-07-12
相关资源
最近更新 更多