Isl*_*lam 25 sql-server stored-procedures
我有一个选择声明
SELECT QBalance
FROM dbo.CustomerBalance
WHERE (CustomerID = 1) AND (MarchentID = @MerchantId)
Run Code Online (Sandbox Code Playgroud)
我想检查该语句是否返回0行.我试图使用ISNULL和IFNULL,但似乎我错过了一些东西.
Mar*_*ith 48
要确定是否存在匹配的行,您可以使用NOT EXISTS.这比计算所有匹配的行更有效
IF NOT EXISTS(SELECT * FROM ...)
BEGIN
PRINT 'No matching row exists'
END
Run Code Online (Sandbox Code Playgroud)
SELECT COUNT(*)
FROM dbo.CustomerBalance
WHERE (CustomerID = 1) AND (MarchentID = @MerchantId)
Run Code Online (Sandbox Code Playgroud)
如果你得到0,你得到0. :)
小智 6
您可以使用@@ROWCOUNT。例如
SELECT QBalance
FROM dbo.CustomerBalance
WHERE (CustomerID = 1) AND (MarchentID = @MerchantId)
--This will return no of rows returned by above statement.
SELECT @@ROWCOUNT
Run Code Online (Sandbox Code Playgroud)
如果第一个语句不返回任何行,您将得到 0。您还可以使用 if 语句来检查第一个语句之后的情况。例如
IF @@ROWCOUNT <> 0
PRINT 'Select statement is returning some rows'
ELSE
PRINT 'No rows returned'
Run Code Online (Sandbox Code Playgroud)