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

hengdda 2008-09-20 12:08:27
说一下我的报表业务需求

我经常把大量的数据从多个表中提取出来 汇总到一个临时表里 然后最后把这个临时表的数据一起再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 就是不支持我这么使用存储过程的? 不允许最终返回结果从一个临时表出来?

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

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


...全文
541 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
ljjhxyljj 2009-02-20
  • 打赏
  • 举报
回复
楼主,我也是在reporting services中使用存储过程,也是在命令类型中选择storeprocedure,在查询字符串中输入“exec 存储过程名 @参数1,@参数2”,我的存储过程只返回一个值,点击刷新字段后,没有反应,而且点击运行时,出现00972错误:identifier is too long。
请问楼主,有无办法解决?谢谢!
hengdda 2008-09-26
  • 打赏
  • 举报
回复
解决了 多谢以上各位提醒了我

使用报表向导是无法使用存储过程的 直接创建报表 在数据里输入存储过程 命令类型选择storeprocedure 然后刷新 各种参数就出来了 临时表是支持的
hyqwan11112 2008-09-20
  • 打赏
  • 举报
回复
用临时表是可以的,只是reporting service的确会有错误提示,但你不管它,确定之后点击那个刷新字段按钮结果集便会把字段列出来,就可以用了!我觉得你这种情况用表变量应该也可以,当然这个我没试验过,好久没用reporting service了
hyqwan11112 2008-09-20
  • 打赏
  • 举报
回复
提示你对象名"#mytotal"无效对嘛?
cow_sheep 2008-09-20
  • 打赏
  • 举报
回复
帮顶 继续关注
dawugui 2008-09-20
  • 打赏
  • 举报
回复
不清楚.

但是动态SQL不支持表变量.

可以将你的临时表变为临时使用的表,用之前创建,用完后删除.
xiaohanxue 2008-09-20
  • 打赏
  • 举报
回复
reporting services支持临时表是肯定的。而且用法也就是在procedure中将多个表中的数据insert到临时表中。最后再select from 临时表取得数据就行了。

而且报表结果集依赖临时表也没有关系吧。只是那个结果集的名字是那样的,我们只需要将临时表中的字段拖到报表的单元格中就行了吧。应该是没影响的。这些我以前用过的。
hengdda 2008-09-20
  • 打赏
  • 举报
回复
谢谢各位的解答

to dawugui: 可以将你的临时表变为临时使用的表,用之前创建,用完后删除.
关于这个 依旧是有冲突的 因为我的用户往往容易统一在同一个时间点 比如每周一上午9点00开始检查上一周的业务 一旦一个查询超过1分钟 就有可能不同地方的两个人同时查询 如果不用临时表用普通表的话 即便是用时建立完毕删除 依旧有可能两个用户冲突的。

to hyqwan11112:
是的 提示我这个表"#mytotal"无效 因为这个临时表当时并不再数据库中真实存在。
确定之后点击那个刷新字段按钮结果集便会把字段列出来 -- 关于这个 我一般在 报表向导 - 报表查询 这一步输入查询字符串的时候已经走不下去了 这里是没有刷新字段按钮的吧?

to zhangzeshuai:
主要是走到这步 报表向导 - 报表查询 - 输入查询字符串 就走不去下了 我找不到 查询工具栏 我是develop版 难道这个没有?

to xiaohanxu
需要将临时表中的字段拖到报表的单元格中就行了
-- 怎么拖呢?我只能走到这步 根本走不到最后的 数据 -布局-预览 那个界面去啊 就说 我连报表向导都走不完 无法保存的~

to wbfsa
谢谢~~
行者无疆-Kevin 2008-09-20
  • 打赏
  • 举报
回复
Reportint Services和数据库一样.
数据库支持的写法.在这里面都支持(常用的)
以前做过,临时表,动态sql,都可以.
资源下载链接为: https://pan.quark.cn/s/abbae039bf2a 在计算机视觉领域,实时目标跟踪是许多应用的核心任务,例如监控系统、自动驾驶汽车和无人机导航等。本文将重点介绍一种在2017年备受关注的高效目标跟踪算法——BACF(Boosted Adaptive Clustering Filter)。该算法因其卓越的实时性和高精度而脱颖而出,其核心代码是用MATLAB编写的。 BACF算法全称为Boosted Adaptive Clustering Filter,是基于卡尔曼滤波器改进的一种算法。传统卡尔曼滤波在处理复杂背景和目标形变时存在局限性,而BACF通过引入自适应聚类和Boosting策略,显著提升了对目标特征的捕获和跟踪能力。 自适应聚类是BACF算法的关键技术之一。它通过动态更新特征空间中的聚类中心,更准确地捕捉目标的外观变化,从而在光照变化、遮挡和目标形变等复杂情况下保持跟踪的稳定性。此外,BACF还采用了Boosting策略。Boosting是一种集成学习方法,通过组合多个弱分类器形成强分类器。在BACF中,Boosting用于优化目标检测性能,动态调整特征权重,强化对目标识别贡献大的特征,从而提高跟踪精度。BACF算法在设计时充分考虑了计算效率,能够在保持高精度的同时实现快速实时的目标跟踪,这对于需要快速响应的应用场景(如视频监控和自动驾驶)至关重要。 MATLAB作为一种强大的数学计算和数据分析工具,非常适合用于算法的原型开发和测试。BACF算法的MATLAB实现提供了清晰的代码结构,方便研究人员理解其工作原理并进行优化和扩展。通常,BACF的MATLAB源码包含以下部分:主函数(实现整个跟踪算法的核心代码)、特征提取模块(从视频帧中提取目标特征的子程序)、聚类算法(实现自适应聚类过程)、Boosting算法(包含特征权重更新的代
内容概要:本书《Deep Reinforcement Learning with Guaranteed Performance》探讨了基于李雅普诺夫方法的深度强化学习及其在非线性系统最优控制中的应用。书中提出了一种近似最优自适应控制方法,结合泰勒展开、神经网络、估计器设计及滑模控制思想,解决了不同场景下的跟踪控制问题。该方法不仅保证了性能指标的渐近收敛,还确保了跟踪误差的渐近收敛至零。此外,书中还涉及了执行器饱和、冗余解析等问题,并提出了新的冗余解析方法,验证了所提方法的有效性和优越性。 适合人群:研究生及以上学历的研究人员,特别是从事自适应/最优控制、机器人学和动态神经网络领域的学术界和工业界研究人员。 使用场景及目标:①研究非线性系统的最优控制问题,特别是在存在输入约束和系统动力学的情况下;②解决带有参数不确定性的线性和非线性系统的跟踪控制问题;③探索基于李雅普诺夫方法的深度强化学习在非线性系统控制中的应用;④设计和验证针对冗余机械臂的新型冗余解析方法。 其他说明:本书分为七章,每章内容相对独立,便于读者理解。书中不仅提供了理论分析,还通过实际应用(如欠驱动船舶、冗余机械臂)验证了所提方法的有效性。此外,作者鼓励读者通过仿真和实验进一步验证书中提出的理论和技术。

22,300

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧