自己以前用SQL Server写了一个出报表的解决方案:
大致存储过程如下:
create procedure p_report(@TimeGroup varchar(500),@ColumnIDGroup varchar(500))
@TimeGroup为返回的数据时间,可以传多个值,以逗号分隔
@ColumnIDGroup为返回的列字段数量,可以传多个值,以逗号分隔如果执行下面的
exec p_report @TimeGroup='2010-1-1,2010-1-2,2010-1-4',@ColumnIDGroup='1,2,3'
将返回3张表,每张表4个字段(包括一个日期字段)上面的要求用SQL Server很好拿出解决方案
但是现在我转换到ORACLE的话,发现ORACLE如果返回多张表,要声明多个游标,但是我这个需求
返回表的数量是动态的,不能限定死。
另外返回的表字段也是动态的,如果事先创建临时表,不能满足字段是动态的需求。如果运行过程中创建
临时表,那临时表的处理会成为问题,没有删除干净就麻烦了!请有经验的专家帮忙给我一个ORACLE的完美解决方案,谢谢了~~
如果没有的话,那我真的认为在实际开发应用方面ORACLE比SQL Server差远了。

解决方案 »

  1.   

    这应该是一个很常见的报表需求,就是用户自定义生成的报表,在报表设置界面用户设置时间集,指标集等信息,设置完毕执行后生成EXCEL表的一个过程。如下图:
    另外我那个存储过程可以多次调用,每次返回一张表,这个效率肯定是没有一次存储过程处理的速度高
    ,只能说是一个迫不得已的解决方案,另外也没有解决动态生成字段的问题啊。