怎样将一个存储过程返回的数据集合反映到另一个存储过程中(MS SQL 6.5)?(200分)

  • 主题发起人 主题发起人 王刚
  • 开始时间 开始时间

王刚

Unregistered / Unconfirmed
GUEST, unregistred user!
视图的结果可以象表一样被访问(被Select),但存储过程就比较麻烦,我说的是结果集合在另一个存储过程访问,谁有好办法?
 
1.直接在服务器断处理
2.传递参数
 
有两个办法
1、建立一个全局表来存储中间结果,并加一HostID字段区分用户。
storedproc1:
...
insert into TMP_Table1
select *,HostID() from Talbe1

storedproc2:
select * from TMP_Table1 where HOST_ID=HostID()
....

2、将存储过程语句放到TQuery中,结果放到#临时表中,再通过TQuery
发SQL可存取#临时表
Query1.SQL:='
...
select * into #TMP_1 from Talbe1

Query2.SQL:=
select * from #TMP_1
.....

 
这就要看你使用的数据库系统是什麽?
如果是MS SQL 或SYBASE,你可以试一下
select * from stored_procedure(param)
 
我采用的数据库是MS SQL 6.5 。
lishan的方法我试了一下,没有通过。我是用"select * from p_test(1)",其中p_test是一个存储过程,带一个整数参数。lishan请用一个事例来说明,ok?
另外,jzy的方法不完全是我提出的问题的解决方案。

如果能允许存储过程A返回的数据记录集合(也就是该过程的最后一个select语句),返回到存储过程B,将极大有利与结构化。
我以前采用的方法是----在存储过程B里面,先建立一个#tmp表,再用insert语句将存储过程A的结果添加进去,如:
存储过程B:
create procedure p_test_b
as
create table #tt {no int}
insert into #tt (execute p_test_a)
再使用#tt作为结果集合。
但这种办法太麻烦了。
谁有办法直接在select里面直接引用存储过程A?



 
很久没人讨论了,人也不知道哪里去了
 
后退
顶部