双11狂欢大促

盲盒赢 定制羽绒服

开启惊喜盲盒,抽取你的专属好礼

— 惊喜奖品抢先看 —

SQL Server 2005 reporting services 是否不支持存储过程的临时表?求教报表开发高人

hengdda hengdda 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
说一下我的报表业务需求

我经常把大量的数据从多个表中提取出来 汇总到一个临时表里 然后最后把这个临时表的数据一起再group by返回结果

例如 我有一个零售店的数据 每天都有很多各种商品的销售数量 每日的数据存储在每日的表中 当我查询一个月的销售时候 我需要吧每天的数据先提取到一个临时表里 最后汇总给出返回结果

以往都是报表使用存储过程实现的业务 最后把返回数据提供给jsp网页等 如今想一起用sqlserver2005的报表解决

过去的存储过程大致如此

create procedure xx
@begintime datetime, --查询开始时间
@endtime datetime --查询结束时间
as
declare ...
begin
create table #mytotal -- 创建一个用于汇总数据的临时表
(
mydate datetime, -- 日期
myitem varchar(10),-- 商品名
itemcnt int -- 商品销售数量
)
...这里有个循环查找输入参数的时间范围内所有表
insert into #mytotal
select
mydate,myitem,itemcnt...from mytblxxx
...以上从每天的表里提出一些数据插入临时表 mytblxxx 可以是 mytbl20080919 mytbl20080920 等每天一张的表

select mydate,myitem,sum(itemcnt) from #mytotal group by mydate,myitem
...最后再把汇总的数据给分组返回结果
end

不复杂的存储过程

但是就这么一个存储过程我在使用sqlserver2005的报表进行创建报表的时候却没什么办法

在报表设计 设计查询窗口 查询字符串里 我仅仅输入了

exec xx @begintime,@endtime

提示我 sql_variant 不能隐形转换为 datetime 就不说了 我还可以修改存储过程的输入参数类型对付

但是 我发现 这个报表结果集自动生成 似乎是依赖于检查存储过程的返回结果来源于哪个表的
糟糕的是 我这个来源是个临时表 而且是个只有存储过程被执行才可以生成的临时表 reporting services 是无法从目前不存在的临时表里获得报表返回结果集项的。

我如果把 #mytotal 换成了 普通表自然可以解决这个问题 但是我的业务需要 同时给多个用户使用 改成普通表导致的后果是这个表同个时间被多人修改 那后果就是出错。

我想问的 是否sqlserver2005 的reporting services 就是不支持我这么使用存储过程的? 不允许最终返回结果从一个临时表出来?

但是我想我这个需求应该是个很常见的需求吧 绝大多数做报表的人应该都是使用 网页和存储过程交互的吧?

请教 我目前的这个存储过程的使用方法 如何在报表中实现?如果我要使用临时表的话 ?
当然 如果能达到同时给多人使不冲突的效果 有其他的解决方法也是可以的 多谢多谢~


...全文

相关推荐

评论 9
收藏 已收藏
分享
返回顶部
hengdda
疑难问题 22,298 成员 121,727 内容