我有一个填充报表数据集的存储过程。其中一个参数是可空的 varchar(10),在 sproc def 中默认为 Null。如果用户只想报告单个订单而不是满足其他参数化标准的所有订单,则此参数允许用户指定订单号。
订单号是整数,但它们存储在表中以前导零为前缀的 varchar(10) 字段中。(报告数据是从以这种方式存储整数订单号的 ERP 系统导入的,因此我保持相同的愚蠢格式!)。
当参数设置为 null 时,无论是在 SSMS 中执行存储过程还是在 SSRS 中使用数据集的“查询...”上下文菜单选项时,我都会得到我期望的所有行。
但是,当我在 SSRS 查询设计器表单中指定一个订单号(包含在“单引号”中,因此 SSRS 不会切断前导零)并执行存储过程时,我得到零行返回。然而,当从 SSMS 执行存储过程并将参数设置为相同的值时,我得到了正确的预期行数。
在解析提供给存储过程参数的值时,我感觉 SSRS 在后台做了一些意想不到的事情,所以我的问题是我应该如何指定一个包含整数的字符串,这样我才能在查询设计器中得到与我在SSMS?单引号还是别的?
我没有发布代码,因为我想看看是否有人立即认识到这个问题,而不是离题,“你为什么要这样做,你为什么不这样做?” 最佳实践迷,不能跳出框框思考,输入答案!;-p
但是,也就是说,如果没有人认识到这个问题,我会发布代码。
平台:SQL Server 2008 R2、BIDS 2008。