0

我正在尝试使用第一个存储过程的结果,它为我提供了分配给特定专家的建议列表。根据该结果,我想要这些提案的相关项目。

我的第一个查询是:

ALTER proc [dbo].[sp_ExpsAssignedProp]
(  
@username as varchar(50)  
)  
as  
begin  
select pro.ProposalID,pro.Title,pro.GrantAmount from tbl_Registration reg  
inner join tbl_Expert exp On reg.RegID=exp.RegID  
inner join tbl_Panel pan On pan.ExpertID_1=exp.ExpertID   
OR pan.ExpertID_2=exp.ExpertID  
OR pan.ExpertID_3=exp.ExpertID  
inner join tbl_Association asso On asso.PanelID=pan.PanelID  
inner join tbl_Proposal pro On asso.ProposalID=pro.ProposalID  
where reg.Username=@username  
end  

现在我正在尝试将其结果用于第二个查询,但它给了我所有状态为已完成的项目。我关心的是让分配的提案的项目状态为已完成。

alter proc [dbo].sp_AssignedProj  
(  
@username as varchar(50),  
@status as varchar(50)  
)  
as  
begin  
exec sp_ExpsAssignedProp   
select proj.ProjectID, proj.Title, proj.Budget, proj.StartDate, proj.FinishDate,    proj.CurrentStatus from  
tbl_Proposal prop   
inner join tbl_Project proj On prop.ProposalID=proj.ProposalID  
where CurrentStatus=@status  
end  
4

2 回答 2

1

您可以使用临时(或永久)表在过程之间共享数据。

在第一个过程中,您可以设置一个临时表,例如:

CREATE TABLE #TempTableName
(
    <table definition that matches what's being inserted here>
)

然后将您需要的任何内容插入其中:

INSERT #TempTableName EXEC myStoredProc

在第二个过程中,您可以使用数据然后删除表:

SELECT * FROM #TempTableName (or JOIN or whatever).
DROP TABLE #TempTableName
于 2013-07-06T13:21:22.060 回答
0

当您从另一个过程执行一个过程时,您不会在调用者 SP 中获得结果集,而是将结果集传递给调用者。如果您需要使用您使用的结果集

INSERT INTO XXX
EXEC [sp name]
于 2013-07-06T13:10:22.497 回答