[英]how to call nested stored procedure sql
我正在尝试使用第一个存储过程的结果,该结果为我提供了分配给特定专家的建议列表。 从这个结果中,我想要那些提案的相关项目。
我的第一个查询是:
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
您可以使用临时(或永久)表在过程之间共享数据。
在第一个过程中,您可以建立一个临时表,例如:
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
当您从另一个执行一个过程时,您不会在调用方SP中得到结果集,结果集将转到调用方。 如果需要使用结果集,请使用
INSERT INTO XXX
EXEC [sp name]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.