我想有一个带可选参数的存储过程。默认值为null
CREATE PROCEDURE [myStoredProcedure](@itemID bigint = NULL)
然后我想在COALESCE
COALESCE(@itemID, table.itemID) = table.itemID
这种方法对于使用可选参数是否正确?这对Oracle有效吗?
答案 0 :(得分:2)
虽然您可以使用COALESCE()
,但我认为明确的比较更为典型:
where (t.itemId = @itemId or @itemId is null)
这两种方法都适用于SQL Server或Oracle,因为它们都是标准SQL。在Oracle中,参数不以@
开头,存储过程的语法可能看起来很不一样。