2016-12-06 93 views
0

我們正試圖實現密碼間隔(如果有)。存儲過程如果/然後聲明

如果sm_Setting(PasswordExpireDays)有一個值,我們使用它。如果不是,繼續

CREATE Procedure user_password_date_interval_check 
    @ua_pk uniqueidentifier 
AS 
    DECLARE @PasswordExpireDays int 
    SET @PasswordExpireDays = 0 

    SELECT 
     sm_Setting, sm_Value 
    FROM 
     Setting_Misc AS sm 
    INNER JOIN 
     Syndicates As syn ON sm.syn_fk = syn.syn_pk 
    INNER JOIN 
     Company As c ON c.syn_fk = syn.syn_pk 
    INNER JOIN 
     User_Accounts As ua ON ua.c_fk = c.c_pk 
    WHERE 
     sm.sm_Setting = 'PasswordExpireDays' 
     THEN sm.sm_Value = @PasswordExpireDays 

我在WHERE子句有問題。我試過CASE。底線是,這一行(基於一個PK和設置),我想抓取Value列中的值。

+0

你需要'更新' – Lamak

+0

好嗎,哪裏?我有點生鏽SQL –

+0

你想要做什麼? – JiggsJedi

回答

3
CREATE Procedure user_password_date_interval_check 
    @ua_pk uniqueidentifier 
AS 
    DECLARE @PasswordExpireDays int 

    SELECT 
     --sm_Setting, 
     @PasswordExpireDays =COALESCE(sm_Value,0) 

    FROM 
     Setting_Misc AS sm 
    INNER JOIN 
     Syndicates As syn 
     ON sm.syn_fk = syn.syn_pk 
    INNER JOIN 
     Company As c 
     ON c.syn_fk = syn.syn_pk 
    INNER JOIN 
     User_Accounts As ua 
     ON ua.c_fk = c.c_pk 

    WHERE sm.sm_Setting = 'PasswordExpireDays' 


    [email protected] is either default 0 or the value from the table if not null. 
+1

您不能這樣做:sm_Setting,@PasswordExpireDays = COALESCE(sm_Value,0)' –

+0

這是拋出一個錯誤,我可以嘗試把它放在SET –

+0

@Prdp - 爲什麼不能? –