我有这个脚本:
CREATE FUNCTION dbo.CheckIfSFExists(@param1 INT, @param2 BIT = 1 ) RETURNS BIT AS BEGIN IF EXISTS ( bla bla bla ) RETURN 1; RETURN 0; END GO
我想以这种方式在程序中使用它:
IF dbo.CheckIfSFExists( 23 ) = 0 SET @retValue = 'bla bla bla';
但我得到了错误:
为过程或函数 dbo.CheckIfSFExists 提供的参数数量不足。
为什么它不起作用?
你必须这样称呼它
SELECT dbo.CheckIfSFExists(23, default)
来自技术网:
当函数的参数有默认值时,调用函数时必须指定关键字DEFAULT,以便检索默认值。此行为与在存储过程中使用具有默认值的参数不同,其中省略参数也意味着默认值。此行为的一个例外是使用 EXECUTE 语句调用标量函数时。使用 EXECUTE 时,不需要 DEFAULT 关键字。