数据集中参数的设置

来源:互联网 发布:mac版搜狗五笔造词 编辑:程序博客网 时间:2024/04/18 15:51

在简单SQL、复杂SQL及存储过程数据集中,可以使用参数,从而增加数据集使用的灵活性。

对于简单SQL、复杂SQL及存储过程数据集,参数的作用和用法是相同的。这里主要以复杂SQL数据集为例,对参数进行说明。

参数的作用

参数的作用是为SQL传入条件值,或为存储过程传入参数值。

要注意的是,参数的作用仅限于此,不能用在SQL的条件值之外的其他位置或存储过程的过程名中。

参数的应用举例

举例来说,一个查询需求为:从T表中查询a、b字段,并以x、y、z字段作为过滤条件(其中x固定取10,y和z接受外部传入的值)。
这种情况下就可以使用数据集参数,具体做法为:
将数据集的SQL语句定义为:

SELECT a,b FROM T WHERE x=10 AND y=? AND z=?

并为数据集定义两个参数,分别接受y和z对应的条件值。

参数的内容

定义参数时,应定义参数的名称、参数的表达式、描述、参数类型、数据类型、值、是否在通用查询中显示、是否为数据集参数等内容。

参数的类型

参数共有三种类型:
(1)普通参数:参数值应该由外部传入;
(2)动态参数:参数值通过一个表达式运算而来;
(3)会话变量:参数值会从会话(session)中获取对应名称的会话变量,其中用户ID、角色ID、机构ID的名称分别为:sys_UserID、sys_Roles_ForDAUC、sys_Orgs_ForDAUC。

对于数据集本身来说,数据集并不关心参数的类型,它只需要参数值。而由引擎根据不同的参数类型,以不同的方式拿到参数值,再传给数据集。

参数的名称

参数的名称仅对普通参数有意义,因为普通参数应由外部传入。而外部传入时就应该以该参数的名称传入这个参数。可以设置参数别名,来对报表中用到的参数名称进行统一显示设置。

参数的表达式

数据集类型为SQL检索、存储过程、复杂数据集时,数据集可以接收报表参数,并将其传递给sql或存储过程,此时可以使用参数表达式达到生成数据集的sql根据参数值不同动态变化的效果。

参数表达式功能进一步增加了应用的灵活性,在接收到参数还未传递到sql前,利用参数表达式,对参数进行预处理或者再加工,增加了生成数据集的灵活性和可控性。

下面以复杂数据集为例,介绍参数表达式的书写位置和方式:

1.sql语句为:select * from demo_orders where 客户ID like ?

2.在参数tab页增加参数,根据需要修改参数名、结果类型、参数类型等,且输入参数的默认值为A,希望可以筛选出包含A字符的客户ID,因此将参数表达式写为:'%'+参数名+'%',此时预览便仅能预览到包含A字符的客户ID数据。

参数的数据类型

因为参数的作用是为SQL及存储过程提供值,因此参数的数据类型为SQL支持的数据类型的一个子集。

参数的值

对于普通参数,这个值将作为默认值,若外部未传入该参数,则以默认值进行后面的动作。未设置时认为是空值,默认值将传入null。

对于动态参数,这里应该设置动态参数的表达式。未设置时认为是空表达式,其运算结果将为null。

是否在通用查询中显示

设置参数时可选择是否在通用查询中显示,勾选代表将在通用查询面板中显示并随报表一同展现时为通用查询条件传入动态条件值;不勾选时表示不会显示在通用查询面板中,仅对报表起过滤作用但过滤条件不可修改。普通参数类型,系统默认选择为勾选。

勾选在通用查询面板中显示的参数,该参数显示在通用查询面板中的参数与宏模块:

会话变量和动态参数不允许显示在通用查询面板中,因此是否在通用查询中显示的复选框会灰色不可用状态。

是否为数据集参数

设置的参数,可以选择是否为数据集参数。勾选,代表该参数为数据集参数,计算时会与sql中的?进行匹配;不勾选代表该数据集并非数据集参数,而是其他用途,例如为动态宏传入条件值等。系统默认选择为勾选。

为数据集参数时,数据集中参数定义的数量和顺序,应与SQL/存储过程中的参数标记(即“?”)一一对应。每个参数都应被用到,且只能被使用一次。

描述

描述的作用是对参数名的意义或作用进行一些补充说明,没有实际意义。但是当参数显示在通用查询面板中时,描述列将作为参数别名列显示,与报表一同展现时描述的内容会作为查询条件的名称显示。

原创粉丝点击