Sql server SQL Server存储过程中的IF语句

Sql server SQL Server存储过程中的IF语句,sql-server,stored-procedures,Sql Server,Stored Procedures,我有以下存储过程: 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 T

我有以下存储过程:

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,则需要向用户显示错误消息。如果您不能显示数据,而不是引发错误,然后将您的
WHERE
子句更改为:

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

应该排除它-您已经将其过滤为
trans\u tipe=3
,因此添加
和(fs\u transaksie.rek!=5205)
将排除结果分别为35205的任何情况。

是否需要一条错误消息,或者您是否可以不显示数据?@Thando Tee-您希望在哪个字段中显示错误?您可以编写where子句“TransactionType!”=3或帐户=5205’旁注:您不应该在存储过程中使用
sp_u
前缀。微软已经这样做了,而且你确实有可能在将来的某个时候发生名称冲突。最好只是简单地避免使用
sp.
并使用其他东西作为前缀,或者根本不使用前缀!