我正在尝试使用第一个存储过程的结果,该结果为我提供了分配给特定专家的提案列表。从那个结果我想要那些提案的相关项目。
我的第一个问题是:
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
答案 0 :(得分:0)
当您从另一个程序执行一个过程时,您没有在调用者SP中获得结果集,结果集将转到调用者。如果您需要使用结果集,请使用
INSERT INTO XXX
EXEC [sp name]
答案 1 :(得分:0)
您可以使用临时(或永久)表在程序之间共享数据。
在第一个程序中,您可以设置一个临时表,如:
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