2014-05-12 139 views
0

我有以下存储过程:IF在SQL Server语句存储过程

ALTER PROCEDURE [dbo].[sp_Detail] 
     @ReceiptNumber int 
AS 
BEGIN 
    SET NOCOUNT ON; 

    WITH invoiceT AS 
    (SELECT 
     fs_transaksie.enti AS Entity, 
     fs_transaksie.rek AS Account, 
     fs_transaksie.trans_tipe AS TransactionType, 
     fs_transaksie.verwysnr AS ReferenceNumber  
    FROM mf_history.dbo.fs_transaksie  
    WHERE (fs_transaksie.verwysnr = @ReceiptNumber) AND (fs_transaksie.trans_tipe = 3)) 
, transactionT as 
    (SELECT 
     fs_kwitansie.kwitansienr AS InvoiceNumber, 
     fs_kwitansie.ktkaart_nr AS CreditCardNumber, 
     fs_kwitansie.ktkaart_bank AS CCBank, 
     fs_kwitansie.ktkaart_bedrag AS CCAmount  
    FROM mf_history.dbo.fs_kwitansie  
    WHERE (fs_kwitansie.kwitansienr = @ReceiptNumber) 
) 
select * 
from invoiceT 
full outer join transactionT on invoiceT.ReferenceNumber = transactionT.InvoiceNumber 
END 

如果fs_transaksie.trans_tipe字段= 3和fs_transaksie.rek = 5205然后需要被显示给用户的错误消息。他可能无法查看数据

+0

它是否需要是一个错误消息,或者你可以不显示数据? – Simon1979

+0

@Thando Tee - 您想在哪个字段中显示错误? –

+1

你可以编写一个WHERE子句'TransactionType!= 3或者Account!= 5205' –

回答

1

如果你只是没有显示数据,而不是引发一个错误,那么改变你的WHERE子句:

WHERE (fs_transaksie.verwysnr = @ReceiptNumber) AND (fs_transaksie.trans_tipe = 3) 
    And (fs_transaksie.rek != 5205) 

应排除它 - 你已经过滤它只是trans_tipe = 3,因此添加And (fs_transaksie.rek != 5205)将分别排除结果分别为3 5205的任何情况。