Answers:
你必须这样称呼它
SELECT dbo.CheckIfSFExists(23, default)
来自Technet:
当函数的参数具有默认值时,在调用函数时必须指定关键字DEFAULT才能检索默认值。此行为与在存储过程中使用具有默认值的参数不同,在存储过程中,省略参数也意味着使用默认值。通过使用EXECUTE语句调用标量函数时,此行为是一个例外。使用EXECUTE时,不需要DEFAULT关键字。
您可以通过三种方式来调用它-带参数,DEFAULT和EXECUTE
SET NOCOUNT ON;
DECLARE
@Table SYSNAME = 'YourTable',
@Schema SYSNAME = 'dbo',
@Rows INT;
SELECT dbo.TableRowCount( @Table, @Schema )
SELECT dbo.TableRowCount( @Table, DEFAULT )
EXECUTE @Rows = dbo.TableRowCount @Table
SELECT @Rows
DEFAULT
在select中需要关键字,而在execute中却可以省略关键字?这很糟糕:/希望有一天会解决。
解决此问题的一种方法是使用带有输出参数的存储过程。
exec sp_mysprocname @返回值输出,@firstparam = 1,@ secondparam = 2
默认情况下,您不会传递给存储过程本身中设置的默认值的值。您可以从输出变量中获取结果。
default
这里没有得到概念的好处...我现在需要去改变所有地方。