我正在一个SSRS报表中使用PostgreSQL ODBC数据源。
根据我以前使用MS SQL Server数据源的经验,在向SSRS数据集查询传递可选参数时,你需要这样做:
关键在于使用
这可能部分原因是无法将命名参数传递到SQL中,而必须像这样使用“?”:
"这使得基本上不可能执行 OR ? IS NULL。那么,有人知道我如何能够向 SSRS 中的 PostgreSQL 数据集传递可选参数吗?"
根据我以前使用MS SQL Server数据源的经验,在向SSRS数据集查询传递可选参数时,你需要这样做:
SELECT *
FROM MyTable
WHERE SomeField = @Param1 OR @Param1 IS NULL
关键在于使用
OR @Param1 IS NULL
,这基本上绕过了SomeField = @Param1
的部分,并有效地充当了一个“可选”过滤器。然而,在使用PostgreSQL ODBC数据源时,这似乎不起作用(不确定是由于Postgres还是ODBC还是两者都有)。单击“刷新字段”或执行/预览报告时,会出现错误。这可能部分原因是无法将命名参数传递到SQL中,而必须像这样使用“?”:
SELECT *
FROM MyTable
WHERE SomeField = ?
"这使得基本上不可能执行 OR ? IS NULL。那么,有人知道我如何能够向 SSRS 中的 PostgreSQL 数据集传递可选参数吗?"
WHERE (somefield = ? OR CAST(? AS <somefield's data type>) IS NULL)
。所以,在参数?
上使用 CAST 是必要的,否则 SSRS 工具会给出未知数据类型的错误。而且我必须在数据集中使用 2 个参数来引用同一个参数两次(因为 WHERE 子句中有 2 个?
引用),但这并不可怕。不知道为什么我之前没有想到使用 CAST。 - Jiveman