我在我的數據庫中有一個存儲過程,以將Employee
表中的員工詳細信息返回到我的應用程序。如何在不同情況下獲取員工記錄
SPHR_Employee_Get(@P_PK INT,@P_ACTIVE TINYINT)
Employee
表結構
EMP_PK INT, EMP_NAME NVARCHAR(200), EMP_ACTIVE TINYINT
值EMP_ACTIVE
:0 =無/ 1 =活動
我的要求是:我需要在下列情況下的員工(S) ,使用相同的程序:
- 所有員工 名
- 所有在職員工(
EMP_ACTIVE = 1
) - 所有非活動的員工(
EMP_ACTIVE = 0
) - 只有特定僱員(
EMP_PK = @P_PK
) - 所有在職員工+特定僱員誰的
EMP_PK = @P_PK
(即使@P_PK員工是無效的),但沒有重複記錄。
我的問題是,我無法更改存儲過程的簽名(對不起,我無法在這裏解釋原因),這意味着我不能在存儲過程中更改/添加參數和數據類型/表。但是我可以更改存儲過程的正文/查詢部分。
我知道這可能是像
SELECT EMP_PK, EMP_NAME
FROM EMPLOYEE
WHERE ?1 AND/OR ?2
但我怎麼可以在這裏管理WHERE
條件的簡單選擇查詢?在上述5種情況下,我可以從我的應用程序傳遞給現有存儲過程參數的值是多少?
注意:EMP_ACTIVE
列僅包含0
和1
(0:InActive/1:Active)。在我的應用程序中,我知道我要在哪裏應用所有這些場景,也就是我需要加載所有員工或所有活動/非活動員工等的位置。但是,我只需要使用現有存儲過程來實現此目的,但我無法向存儲過程添加一個附加參數。
好,但在第五種情況下,我需要在兩次調用存儲過程,對吧? –
是的,如果你想在一次通話中想要它,你需要以另一種方式改變身體。這是複雜的動態編碼需要@AbdulRasheed –
謝謝你的寶貴建議,從我+1。到目前爲止,這個答案是最好的,我正在等待一個簡單的腳本來處理所有這些情況,而不需要任何動態的sql。 –