2013-02-28 18 views
0

嘿,我在存儲的特效一種新的,我有程序像如何結合在SQL 2005中返回兩個結果的存儲過程的結果?

ALTER procedure [dbo].[list_of_employee] 
(
    @employee_id int 
) 
as 
begin 
select *from project_employee_rel PE 
inner join employee_details E on E.employee_id=PE.employee_id 
inner join project_details P on P.project_id=PE.project_id 
where [email protected]_id 

select * from employee_details 
where [email protected]_id 
end 

它返回兩個結果分別 我想導致像「如果第一個查詢返回空行或空,則第二個查詢得到執行,否則不 PLZ幫我 在此先感謝

+1

http://stackoverflow.com/a/12715687/137615 – Ramunas 2013-02-28 11:29:37

+1

這兩個查詢有不同的結果模式,你確定這是你想要的嗎?如果您按照您的建議分支代碼,不同的@ @ employee_id將使用大量不同的查詢計劃,結果結構將因您提供的值而異。SP將成爲性能負擔而不是性能優勢。 – Jodrell 2013-02-28 11:36:14

+0

我不想降低sp – user2067120 2013-02-28 12:05:52

回答

1

試試這個

ALTER procedure [dbo].[list_of_employee] 
(
    @employee_id int 
) 
as 
BEGIN 
    DECLARE @Count int 
    SET @Count = select COUNT(PRIMARYKEY COLUMN) from project_employee_rel PE 
    inner join employee_details E on E.employee_id=PE.employee_id 
    inner join project_details P on P.project_id=PE.project_id 
    where [email protected]_id 
    IF (@Count>0) 
    BEGIN 
     select *from project_employee_rel PE 
     inner join employee_details E on E.employee_id=PE.employee_id 
     inner join project_details P on P.project_id=PE.project_id 
     where [email protected]_id 
    END 

    ELSE 
    BEGIN 
     select * from employee_details 
     where [email protected]_id 
    END 
END 
+0

嘿謝謝你,這就是我想要的。 ,以提高性能我想出了另一種解決方案,使用左外連接 – user2067120 2013-02-28 12:09:01

+0

好吧,多數民衆贊成好,我只是給你想要的答案,如果它是幫助完整的你,投票的答案。 – Popeye 2013-02-28 12:12:25

0
IF Check Count of your first query 
    return result set 
ELSE 
    return other result set 
END 
+0

的性能感謝您的幫助 – user2067120 2013-02-28 12:10:50

相關問題