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