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