一个简单的存储过程:如何输出多个查询得到的值

javaxbenz 2008-06-24 10:46:46
如我想实现类似下面这样简单的功能

ALTER PROCEDURE [dbo].[mysp]
@output1 float output,
@output2 float output,
@output3 float output,
AS
BEGIN
SET NOCOUNT ON;
SELECT @output1= sum(成交金额) from 清算流水 where 服务部 = 1
SELECT @output2= sum(成交金额) from 清算流水 where 服务部 = 2
SELECT @output3= sum(成交金额) from 清算流水 where 服务部 = 3
END

可是 output1、output2 output3出来的都是0.该怎么写存储过程才能分别得到这3个值呢?
...全文
355 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
javaxbenz 2008-06-25
  • 打赏
  • 举报
回复
原来reporting services 中只能取存储过程的第一个结果集
happysophie 2008-06-24
  • 打赏
  • 举报
回复
我也试过了,很奇怪,也有问题。
如果我单独运行过程其中的查询,绝对能得到数据。
但写入过程,然后调用过程,则得到的结果是0。
调试过程,单步执行,算出来@output1,@output2都有值,但无法返回两个变量。
我用的是我的表的值。
create table test (name char(1),j int)
insert into t(name,j) select 'A',100
insert into t(name,j) select 'A',200
insert into t(name,j) select 'B',320
insert into t(name,j) select 'A',100
insert into t(name,j) select 'B',90
insert into t(name,j) select 'A',460
insert into t(name,j) select 'A',510

--过程:
create PROCEDURE [dbo].[mysp]
@output1 float output,
@output2 float output
AS
BEGIN
SET NOCOUNT ON
SELECT @output1= sum(j) from t where name = 'A'
SELECT @output2= sum(j) from t where name = 'B'
return
END

--调用
declare @t1 float,@t2 float
set @t1=0.0
set @t2=0.0
exec mysp @t1,@t2
select @t1,@t2

--结果:
----------------------------------------------------- -----------------------------------------0.0 0.0

(1 row(s) affected)




怎么回事?高手帮助解答吧
dsk22657 2008-06-24
  • 打赏
  • 举报
回复
先看SELECT sum(成交金额) from 清算流水 where 服务部 = 1 是不是0
utpcb 2008-06-24
  • 打赏
  • 举报
回复
ALTER PROCEDURE [dbo].[mysp]
@output1 float output,
@output2 float output,
@output3 float output,
AS
BEGIN
SELECT @output1=sum(case 服务部 when 1 then 成交金额 else 0 end),
@output2=sum(case 服务部 when 2 then 成交金额 else 0 end),
@output3=sum(case 服务部 when 3 then 成交金额 else 0 end)
from 清算流水

END




楼主要确认你的数据是不是为零哦!
pt1314917 2008-06-24
  • 打赏
  • 举报
回复

ALTER PROCEDURE [dbo].[mysp]
@output1 float output,
@output2 float output,
@output3 float output,
AS
BEGIN
SELECT @output1=sum(case 服务部 when 1 then 成交金额 else 0 end),
@output2=sum(case 服务部 when 2 then 成交金额 else 0 end),
@output3=sum(case 服务部 when 3 then 成交金额 else 0 end)
from 清算流水

END

linguojin11 2008-06-24
  • 打赏
  • 举报
回复
批处理中我怎么没看到局部变量@t1,@t2啊。。只看见OUT PUT的变量,
那执行存储过程的时候要将变量传给哪个变量接收,然后返回OUTPUT变量
happysophie 2008-06-24
  • 打赏
  • 举报
回复
我查了书,在调用的时候,用以下语句

declare @t1 float,@t2 float
set @t1=0.0
set @t2=0.0
exec mysp @t1 output,@t2 output
select @t1,@t2


就是运行时指定@t1,@t2指明关键字output,才能将过程中的值传入批处理中的局部变量@t1,@t2。
运行结果:

-------------------------- -----------------------------------
1370.0 410.0

(1 row(s) affected)

wlzd3636 2008-06-24
  • 打赏
  • 举报
回复
declare @sql nvarchar(500),@output1 int ,@output2 int
set @sql=' SET NOCOUNT ON'+ char(13)
+'SELECT @output1= sum(j) from t where name = '+'''A'''+ char(13)
+'SELECT @output2= sum(j) from t where name = '+'''B'''
exec sp_executesql @sql, N'@output1 int output,@output2 int output',@output1 output,@output2 output
select @output1,@output2



----------- -----------
1370 410

(1 行受影响)
javaxbenz 2008-06-24
  • 打赏
  • 举报
回复
楼上的跟我一样,直接执行存储过程算出来@output1,@output2都有值。

但是如果在visual studio 作的报表中引用这几个从存储过程中出来的值,

报表显示出来的应该都是null,什么都没有显示出来。
资源说明】 基于深度学习的光伏发电功率预测系统源码(含前端+后端)+项目说明.zip 本项目主体围绕着“基于深度学习算法的短期光伏发电功率预测模型”而构建。旨在设计出一款面向电力公司和光伏发电业主的系统,其具有辅助决策、风险预测的能力,强大的数据提取、统计与分析能力和清晰的数据相关性、影响性的可视化展示功能。 项目背景 随着光伏发电网规模的扩大和应用的普及,对于光伏发电的并网需求持续增大,但是光伏发电所具有的波动性和间歇性的特性势必会对并网系统的稳定性产生一定的影响。诸如太阳辐射强度、空气湿度、气压、环境温度等因素是导致光伏发电的波动性和间歇性产生的首要因素,若对于光伏发电缺少相应的技术手段预测功率和调整模式,势必在并网时会不利于电力系统的调整,并且为电网调度人员产生困扰。 在此背景之下,设计出合理且有效的光伏发电功率预测模型一方面可以提升并网后电力系统运行的安全性和稳定性;另一方面也有利于光伏电站业主或调度人员的协调调度,进一步提升电能资源利用率。 项目目的 通过设计出合理的“基于深度学习算法的短期光伏发电功率预测模型”以及对该模型的进一步优化,在大规模分布式光伏发电的电力管理层面,为管理人员提供短期内环境因素的具体数据以及光伏发电功率的预测结果,帮助管理人员进行协调调度,从而提升电能利用率;在个人中小规模分布式光伏电站业主层面,提供短期内光伏发电功率的预测结果并给出调整策略建议,保障中小型分布式光伏电站并网后电网运行的稳定性和供电可靠性,同时对于一种更加互利且合理的个人光伏发电并网后差额电量的补偿和外送机制进行展望。 ## 技术选型(Technics) 项目架构 该项目采用B/S架构,后端调用算法模型,展示在前端。 算法技术 主要语言:Python - Keras - Sci-kit Learn 后端技术 主要语言:Java - Spring

34,874

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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