UAP报表开发手册 联系客服

发布时间 : 星期日 文章UAP报表开发手册更新完毕开始阅读

1.3 SQL脚本查询(含存储过程)

在图1.1步骤中选定“SQL脚本查询”,点击“下一步”则进入SQL脚本查询类型的数据源定义:

图1.14

SQL脚本查询类型又分为SQL脚本和存储过程两个类别,可通过第一个页签的左上端的下拉列表中选择相应的类别(具体如何定义两种类别请查阅数据引擎相关文档)。其他三个页签中,“查询结果列”和“过滤条件设置”已经在前面的单元中说明,此处不在详述。其中,这种数据源类型有一个“查询参数设置”页签,如下图:

图1.15

如果脚本类型中选择的是“存储过程”,则此处可以使用“刷新”按钮来获取存储过程所需要的参数;而SQL脚本类型则需要手动填写参数的信息。需要注意的是,参数的名称必须与存储过程或SQL脚本的名称完全一致。运行时查询参数的具体值来源是通过过滤条件获得的,因此查询参数需要和过滤条件绑定在一起(绑定方法请参阅本手册2.2单元)。 由于很多存储过程的数据源内部处理时使用临时表,并且将此临时表的数据作为报表的数据源的物理表,因此,为提高效率,报表系统对此种类型的存储过程将直接使用其生成的临时表进行查询,而不再另外创建查询数据的临时表。为实现上述机制,存储过程需要提供一个名称为@tablename的字符串参数,报表系统在查询过程中调用该存储过程时,将对此参数传入一个数据库物理表名,存储过程内部处理数据时,需要将处理的最终结果填写到这个物理表中。需要注意的是,这个物理表需要在存储过程内部创建,从而可达到满足存储过程自身对表结构的控制。以下为一个存储过程例子:

CREATE PROCEDURE DataSourceBankInfo ( @tablename NVARCHAR(200) ) AS -- 创建临时表 DECLARE @sql NVARCHAR(1000) SET @sql = N'CREATE TABLE '+@tablename+'

'')'

( 银行编码 NVARCHAR(10) NOT NULL PRIMARY KEY, 银行名称 NVARCHAR(100) NOT NULL )' EXEC (@sql)

-- 向临时填入数据

SET @sql = N'INSERT INTO '+@tablename+' VALUES(N''01'', N''中国人民银行EXEC (@sql)

报表系统将以如下方式调用此存储过程(参数串仅为例子): EXEC DataSourceBankInfo N'the_bank_name_0923485756'

而在获取数据时,报表系统进行如下查询:

select * from the_bank_name_0923485756

1.4 自定义查询

自定义查询是指提供一个COM组件(通常为VB6.0组件)

或.NET组件(通常为C#组件)来提供获取数据的方法(SQL脚本,存储过程或数据库临时表)。关于自定义查询组件的建立方法请参阅本手册3.2单元。

在图1.1步骤中选定“自定义查询”,点击“下一步”则进入自定义查询类型的数据源定义:

图1.16

其中数据服务信息指的是自定义组件的相关信息,关于自定义查询组件的建立方法请参阅本手册3.2单元。