3

メールを @email 文字列に追加しようとしていますが、間違った @status が渡されます。コメントアウトした行がなくても機能します。私は近いと思いますが、構文が間違っています。@override_email は null です。

DECLARE @retval INT
DECLARE @email nvarchar(200)
DECLARE @override_email nvarchar(200) = null
DECLARE @status INT = 2
DECLARE @in_customer_id INT = 160308

SET @email = COALESCE(@override_email, (
                      SELECT
                        COALESCE(CustomerDetail.Email, '')
                        /*+ (if @status NOT IN (3,4,5) ', alex@email.com')*/
                      FROM
                        tbl_customer_detail     CustomerDetail
                      WHERE
                        CustomerDetail.customer_id = @in_customer_id))                      
select @email
4

1 に答える 1

3

CASEこれは、次の式を使用して実行できます。

DECLARE @retval INT
DECLARE @email nvarchar(200)
DECLARE @override_email nvarchar(200) = null
DECLARE @status INT = 2
DECLARE @in_customer_id INT = 160308

SET @email = COALESCE(@override_email, (
                      SELECT
                        COALESCE(CustomerDetail.Email, '')
                        + case when @status NOT IN (3,4,5) then ', alex@email.com' else '' end
                      FROM
                        tbl_customer_detail     CustomerDetail
                      WHERE
                        CustomerDetail.customer_id = @in_customer_id))                      
select @email
于 2012-08-29T21:29:53.920 に答える