|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册账号
×
使用储过程作为报表数据源
自定义报表虽然提供了灵活的编程接口,但使用比较复杂。我们提供了另外一种组织复杂数据源的方法:在数据源语句中直接调用存储过程。这种方法的优点是无须其他编程语言,也不必去学习自定义报表那些令人头晕的接口,使用简单;缺点是只能通过单一字符串提供条件,这会限制存储过程的执行效率和程序设计的灵活性。
调用存储过程语法
<with pocedure> <procedure name > <temp table name >
说明:
<with pocedure> 关键字,说明当前数据源取自存储过程
<procedure name > 存储过程名称,必须
<temp table name > 存储过程生成的临时表名,必须
例28:
with procedure sp_test tempdb..tmptable
存储过程设计规范
被调用的存储过程有且必须只有一个字符串参数,该参数接收条件字符串(如果报表没有定义条件项则该参数为空字符串),该参数应留出足够的长度以接收条件字符串;存储过程最终必须生成临时表,临时表名是在调用时指定的哪个。
使用存储过程举例
1. 在数据库创建存储过程
例28:
CREATE PROCEDURE Sp_Test
( --条件参数
@chrWhere varchar(1000)=''
)
AS
Declare @chrsql varchar(2000)
--删除已经存在的临时表
If exists(select name from tempdb..sysobjects where name ='sa_tmpupdate')
Drop table tempdb..Sa_tmpUpdate
--生成临时表
set @chrsql ='select * into tempdb..sa_tmpupdate from inventory '
--加上条件
if ltrim(rtrim(@chrwhere)) <> ''
set @chrsql = @chrsql + ' where ' + @chrwhere
exec(@chrsql )
select * from tempdb..sa_tmpupdate
GO
2.创建测试报表,直接在SQL视图中书写调用存储过程语句如图:
3.保存报表,设置格式和条件。
如下图,在报表查询时
传递字符串实际执行命令:
exec sp_test 'cinvcode>=''010101'' and cinvcode<=''010102'''
目前存储过程只接受一个参数,可通过此参数传递过滤条件。
|
|