SQL server sp_executesql出现SQL字符串错误



我有一个字符串,看起来像这样:

<>之前select @mindate = min(time), @maxdate = max(time) from ' + @st_churn_active_table;之前

我把它打印出来,它看起来像这样:

<>之前从derp.derp_table中选择@mindate = min(time), @maxdate = max(time)之前

我运行sp_executesql,参数定义如下:

<>之前执行sp_executesql @sqlstring, N'@maxdate日期,@mindate日期'之前

错误如下:

<>之前参数化查询'(@maxdate date,@mindate date)select @mindate = min(时间),@maxda'期望参数'@maxdate',该参数未提供。之前

字符串变成
'(@maxdate日期,@mindate日期)select @mindate = min(时间),@maxda'
sql字符串被切断,有人知道为什么以及如何解决这个问题吗?

谢谢!

参见:如何在SQL Server中使用sp_executesql存储过程时指定输出参数

首先,sql server看到了整个字符串。只有错误消息截断了它。注意,该错误使缺失参数的名称正确,即使截断的sql字符串只包含名称的一部分。

第二,这不会像你想的那样工作。对于sp_executesql,不能这样使用输出参数。

但最后的问题是为什么它抛出一个错误。我不能确定,但我怀疑这里的问题是存在类型不匹配,因此它不能使用您给它的参数。我希望sql server在这种情况下会抛出一个更好的错误消息(抱怨类型不匹配),但是我没有sql server方便测试,我想不出任何其他原因会导致这个问题。

相关内容

  • 没有找到相关文章

最新更新