如何验证新账单生成中的现有账单编号,而不是在同一生成账单的更新情况下?

时间:2016-06-16 06:03:02

标签: sql sql-server database stored-procedures logic

我正在为账单号存在编写存储过程。我只通过账单号作为参数。我希望当我们创建新帐单和用户输入已生成帐单的号码时,它会返回此查询中的帐单明细。如果该账单在更新模式下打开,那么它将返回任何不同的账单。我已经尝试了很多并且更新模式正在运行,但新的账单案例也给出了相同的响应。请帮助。 以下是我的SP

DECLARE @billID AS INT;
            SELECT  @billID = billID
            FROM    dbo.eInvoice_tbl_billInfo
            WHERE   billNumber = 'GW-090'
            PRINT @billID
            IF @billID = NULL
                BEGIN
                    PRINT 'new'
                    SELECT  billNumber
                    FROM    dbo.eInvoice_tbl_billInfo
                    WHERE   billNumber = 'GW-090'
                END
            ELSE
                BEGIN
                    PRINT 'update'
                    IF NOT EXISTS ( SELECT  billNumber
                                    FROM    dbo.eInvoice_tbl_billInfo
                                    WHERE   billNumber = 'GW-090'
                                            AND billID != 154 )
                        BEGIN
                            SELECT  billNumber
                            FROM    dbo.eInvoice_tbl_billInfo
                            WHERE   billNumber = 'GW-090'
                                            AND billID != 154
                        END

                END

非常感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

您需要将空比较更改为:

 IF @billID is NULL

而不是

 IF @billID = NULL

归结为SQL如何使用比较运算符处理null。尝试运行以下内容,希望能更好地理解它:

DECLARE @billID AS INT;
set @billID = NULL
PRINT iif(@billID is null, 'same', 'different')
PRINT iif(@billID = null, 'same', 'different')
PRINT iif(null is null, 'same', 'different')
PRINT iif(null = null, 'same', 'different')

答案 1 :(得分:0)

只需从服务器端添加新的账单ID参数即可解决此问题。