【发布时间】:2020-02-27 22:39:41
【问题描述】:
我正在按照本指南创建热图。
http://sqljason.com/2012/03/heat-maps-for-ssrs-using-map-control.html
其中一个步骤是将一个存储过程提供给另一个生成我的数据的存储过程。
我的看起来像这样:
exec dbo.CreateHeatMap 20, 25, 'exec ZZ_N_FinalEcomDashboardCustomerRFMUnPivot 03, 001, 1/1/2014, 1/1/2020'
问题在于这些日期。起初,我将它们包裹在像 '1/1/2014' 这样的撇号中,但这似乎打破了整条线。
我已经尝试了撇号、声明和设置变量、使用连接或加号以及其他所有方法的所有组合,但我似乎无法让它发挥作用。
我正在使用参数在 SSRS 报告中构建这一行。所以我的终极目标是这样的
exec dbo.CreateHeatMap 20, 25, 'exec ZZ_N_FinalEcomDashboardCustomerRFMUnPivot @Company, @Division, @Date, @date2'
这些是我报告中的参数。我正在使用这条线在我的报告中创建一个数据集。
正确的语法是什么?
【问题讨论】:
-
转义单引号的正确方法是将它们加倍 - 当你这样做时会发生什么?
-
这似乎对 SQL 注入很危险。我想知道如果有人跑
exec dbo.CreateHeatMap 20, 25, 'DROP PROC dbo.CreateHeatMap;';会发生什么 -
@DaleK 双引号也不起作用,因为我认为我正在输入像 '1/1/2014' 这样的字符串,而不是日期时间变量。但是您知道如何跳过所有引号并直接提供我当前的报告参数吗?
标签: sql sql-server exec sp-executesql