假设有以下脚本:
所以我继续尝试:
1.
DECLARE @result TABLE(Id BIGINT);
DELETE FROM [Products].[Product]
OUTPUT DELETED.[Id] INTO @result
WHERE [Products].[Product].[Id] = 1589;
所以我继续尝试:
1.
SELECT CAST(ISNULL([Id], -1) AS BIGINT) AS N'RetValId' FROM @result;
当[Id]
为空时,返回null(无),但这个返回了-1:
2
DECLARE @mi BIGINT;
SET @mi = (SELECT [Id] FROM @result)
SELECT CAST(ISNULL(@mi, -1) AS BIGINT) AS N'RetValId'
为什么?第一个脚本有什么问题吗?
更新
那么有没有办法检查删除的ID是否为空,如果返回-1则返回ID,而不声明另一个变量?最简单的方法是什么?
SELECT CAST(ISNULL([Id], -1) AS BIGINT) AS N'RetValId' FROM @result;
) 返回-1,但是什么也没有返回,为什么?第二个脚本为什么返回-1? - SaeidSELECT
将不返回任何行,因此无法对列应用ISNULL
- 因为它不存在。 - marc_s