| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1665 人关注过本帖, 1 人收藏
标题:请教高手一个关于调用存储过程返回结果的问题!
只看楼主 加入收藏
go2011
Rank: 6Rank: 6
等 级:侠之大者
帖 子:56
专家分:445
注 册:2011-4-21
收藏
得分:25 
1.如果是sqlserver2005,可以新建一个存储过程,通过表变量来调用原来存储过程的返回值。例如:
CREATE PROCEDURE usp_test AS
DECLARE @TEMPTABLE TABLE (展位编号 CHAR(10),展位名称 CHAR(10),...)
INSERT INTO @TEMPTABLE(展位编号,展位名称,...) EXEC shourutongji_1 参数1,参数2,参数3
SELECT * FROM @TEMPTABLE
GO

如果是sqlserver2000就不能用这种方法,因为sqlserver2000不支持 INSERT INTO @TEMPTABLE()EXEC 存储过程
  
2.FKB中在@qiriqi和@zhiriqi之间fk_zwid出现过两次,fkb中的sum(fk_cuxiaofei)和sum(fk_shuakafei)不能合并,会出现两行可能与分组条件有关,如果将group by fk_zwid,convert(char(10),fk_date,120) 改成 group by fk_zwid,convert(char(10) 也许能解决。

因为楼主提供的信息有限,这只是一点猜测,供参考。最好是如版主提议把表贴出来。
 
2011-05-13 00:33
go2011
Rank: 6Rank: 6
等 级:侠之大者
帖 子:56
专家分:445
注 册:2011-4-21
收藏
得分:0 
1.如果要调用存储过程返回的表,可使用表变量,将存储过程查询得到的表存入表变量,然后对表变量进行查询(与表查询基本一样)。具体实现方法视使用的sqlserver版本不同有所不同。

如果是sqlserver2005,可新建一存储过程来直接调用原有的存储过程,例如:
create procedure test as
declare @tmpTable table (展位编号 char(10),展位名称 char(10),...)
insert into @tmpTable execute shourutongji_1 参数1,参数2,参数3
select * from @tmpTable
go

由于sqlserver2000不支持insert into @tmpTable execute,所以上面方法不能用,只能对原有的数据存储进行修改,在原有数据存储使用insert @tmpTable select... 来实现将查询结果表导入表变量,然后对表变量进行查询。

2.FKB中在@qiriqi和@zhiriqi之间fk_zwid出现过两次,sum(fk_cuxiaofei)和sum(fk_shuakafei)不能合并,会出现两行,可能与分组条件有关,由于楼主提供信息有限,只是猜测,仅供参考。最好能如版主提议把表贴出来。

[ 本帖最后由 go2011 于 2011-5-13 09:25 编辑 ]
2011-05-13 09:23
go2011
Rank: 6Rank: 6
等 级:侠之大者
帖 子:56
专家分:445
注 册:2011-4-21
收藏
得分:0 
不好意思,由于上传时网络故障,以为没上传成功,因此多发了一次
2011-05-13 09:28
lxd0980
Rank: 7Rank: 7Rank: 7
来 自:湖南长沙
等 级:黑侠
帖 子:166
专家分:505
注 册:2011-3-27
收藏
得分:25 
我只知道在ORACLE 可以创建一个变量来存储.然后再通过输出函数把它输出 来的.不知道在SQL可以不.
2011-05-16 15:53
快速回复:请教高手一个关于调用存储过程返回结果的问题!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.022759 second(s), 7 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved