MsSql Server:存储过程中的默认 bigint 参数

MsSql Server: Default bigint argument in stored procedure

我想要一个带有可选参数的存储过程。默认值为 null

CREATE PROCEDURE [myStoredProcedure](@itemID bigint = NULL)

那我想用在COALESCE

COALESCE(@itemID, table.itemID) = table.itemID

这种方法对使用可选参数是否正确?这对 Oracle 是否同样有效?

虽然可以使用COALESCE(),但我认为显式比较更典型:

where (t.itemId = @itemId or @itemId is null)

这两种方法都适用于 SQL 服务器或 Oracle,因为它们都是标准的 SQL。在 Oracle 中,参数不以 @ 开头,存储过程的语法看起来可能完全不同。