存储过程修改

jiangseraph 2009-11-30 12:07:47
存储过程如下:

declare @iTotalRPGroup int;

select COUNT(*) from RPGROUPS_RPACCESS
WHERE ROUTEPOINTGROUPID = @RPGroup_ID
GROUP BY routepointgroupid, routepointid;
set @iTotalRPGroup = @@Rowcount

SELECT 'TRUE' AS ISGROUP, NULL AS DESTINATION, DESTINATIONTYPE, NAME_SCENARIO, DESCRIPTION
FROM VIEW_MODEDETAILGROUP
WHERE routepointgroupid = @RPGroup_ID
GROUP BY DESTINATIONTYPE, NAME_SCENARIO, DESCRIPTION
HAVING COUNT(*) > = cast(@iTotalRPGroup as varchar(255))


这个存储过程的输出结果如下
Results --这个是第一个SELECT的结果
1
1
1
...

ISGROUP DESTINATION DESTINATIONTYPE NAME_SCENARIO DESCRIPTION --这个是第二个SELECT的结果
TRUE NULL AfterHrsMsg NULL After Hours
TRUE NULL EmergencyMsg NULL Evacuation
...

我只想输出第二个SELECT的结果,应该如何修改这个存储过程?
换句话说:我在使用C#获取存储过程结果集,DataSet里看到Tables[0](第一个SELECT输出结果)和Tables[1](第二个SELECT输出结果).我只想在DataSet中只看到Tables[0], 即第二个SELECT的输出结果

我希望修改这个存储过程,不是改C#程序,请大家帮我改改,先谢谢了
...全文
75 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
jiangseraph 2009-11-30
  • 打赏
  • 举报
回复
那个结果是中间过程
select COUNT(*) from RPGROUPS_RPACCESS
WHERE ROUTEPOINTGROUPID = @RPGroup_ID
GROUP BY routepointgroupid, routepointid;
的输出
jiangseraph 2009-11-30
  • 打赏
  • 举报
回复
就是你查看运行结果的窗口显示的内容:
我用的是E版SQL 2008
有两个Tab:Result和Messages
Result内容显示如下:
1
1
1
...

ISGROUP DESTINATION DESTINATIONTYPE NAME_SCENARIO DESCRIPTION
TRUE NULL AfterHrsMsg NULL After Hours
TRUE NULL EmergencyMsg NULL Evacuation
...

Return Value
0
icelovey 2009-11-30
  • 打赏
  • 举报
回复
存储过程只能一个返回结果, 你那个1111的那个有什么用途..
jiangseraph 2009-11-30
  • 打赏
  • 举报
回复
抱歉我的表述能力不好.这个问题很难说清楚,不知道有没有人在C#取数据时候碰到过类似的问题,
本来我是在C#论坛提问的.但是经过分析以后发现我应该改写存储过程,所以才到这里又发了个帖子,
也请看看这个帖子,不知道大家能明白不?
http://topic.csdn.net/u/20091127/06/5c152e5a-c6d0-49ea-8ae0-fe2ab0bfff04.html
jiangseraph 2009-11-30
  • 打赏
  • 举报
回复
先谢谢楼上几位的回复,看来我没有表述清楚

[Quote=引用 7 楼 hovoy 的回复:]
你要返回一个result还是一个result list ?
[/Quote]

我需要返回一个result list,关键是如何改写-> 取@@rowcount的这个中间过程

[Quote=引用 5 楼 xman_78tom 的回复:]
SQL code-- 或者, @iTotalRPGroup 获得符合查询条件的行数。。。
[/Quote]
这个方法我试过了,


declare @iTotalRPGroupint;
select @iTotalRPGroup=COUNT(*) from RPGROUPS_RPACCESSWHERE ROUTEPOINTGROUPID=@RPGroup_IDGROUPBY routepointgroupid, routepointid;



declare @iTotalRPGroupint;
select COUNT(*)from RPGROUPS_RPACCESSWHERE ROUTEPOINTGROUPID=@RPGroup_IDGROUPBY routepointgroupid, routepointid;
set @iTotalRPGroup= = @@rowcount

的结果是不一样的.我尝试print出@iTotalRPGroup这个变量
第二种情况:@@rowcount的结果得到是上面这个Group by SQL的记录数,
而第一种情况得到的结果是1,请看我1楼的数据返回结果
hovoy 2009-11-30
  • 打赏
  • 举报
回复
你要返回一个result还是一个result list ?
icelovey 2009-11-30
  • 打赏
  • 举报
回复
我也不是很明白楼主的意思
xman_78tom 2009-11-30
  • 打赏
  • 举报
回复

-- 或者, @iTotalRPGroup 获得符合查询条件的行数。。。
declare @iTotalRPGroup int;
select @iTotalRPGroup=COUNT(*) from RPGROUPS_RPACCESS
WHERE ROUTEPOINTGROUPID = @RPGroup_ID
GROUP BY routepointgroupid, routepointid;


xman_78tom 2009-11-30
  • 打赏
  • 举报
回复

-- 不知道你的业务需求,只能试着写一个
-- 这个是 @iTotalRPGroup 获得上条语句影响的行数,按你的原句写的。
declare @iTotalRPGroup int, @c int;
select @c=COUNT(*) from RPGROUPS_RPACCESS
WHERE ROUTEPOINTGROUPID = @RPGroup_ID
GROUP BY routepointgroupid, routepointid;
set @iTotalRPGroup = @@Rowcount

22,210

社区成员

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

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