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  

今、私はその結果を2番目のクエリに使用しようとしていますが、ステータスが完了しているすべてのプロジェクトが表示されます。私の懸念は、割り当てられた提案のプロジェクトを終了済みのステータスで取得することです。

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

2 番目の手順では、データを使用してからテーブルを削除できます。

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 に答える