Sql server 是否可以像在存储过程中一样在函数中使用默认参数?
我试图在函数(而不是存储过程)中包含一个默认参数。我无法让它工作,无论我在哪里尝试调用它,如果没有传递默认参数,它都会给我错误“…参数不足…” 是否可以为以下任何一项使用默认参数,如果可以,似乎必须以不同的方式进行处理,那么您如何做到这一点:Sql server 是否可以像在存储过程中一样在函数中使用默认参数?,sql-server,sql-server-2008,sql-function,Sql Server,Sql Server 2008,Sql Function,我试图在函数(而不是存储过程)中包含一个默认参数。我无法让它工作,无论我在哪里尝试调用它,如果没有传递默认参数,它都会给我错误“…参数不足…” 是否可以为以下任何一项使用默认参数,如果可以,似乎必须以不同的方式进行处理,那么您如何做到这一点: 表值函数 标量值函数 聚合函数 系统功能 我试过用谷歌搜索,但我能找到的所有东西都只涉及存储的参数,在这种情况下根本不起作用 编辑:这是我试图创建函数的方式: CREATE FUNCTION MyFunction (@firstparam bit,
- 表值函数
- 标量值函数
- 聚合函数
- 系统功能
编辑:这是我试图创建函数的方式:
CREATE FUNCTION MyFunction (@firstparam bit, @secondparam bit = 1) RETURNS @retparam table (columnname bit)
然后我会试着用类似于
SELECT *
FROM table1
WHERE table1.uid IN (select columnname from dbo.MyFunction(1))
这会导致错误“…参数不足…”注释过长 我想只有真正绝望的眼神才能看到这个世界。很明显,默认参数是受支持的。以下是语法的相关部分: 创建函数[schema_name.]FUNCTION_name([{@parameter_name[ AS][type\u schema\u name.]参数\u数据\u type
[ = **default** ] [ READONLY ] }
[ ,...n ] ] )
再往下走一点:
[=默认值]
是参数的默认值。如果定义了默认值,
可以在不指定该函数值的情况下执行该函数
参数
您不提供有关您正在执行的操作的提示,但函数不使用
default
关键字。它们只使用=
您可以对参数使用默认值,但与过程不同。您必须指定所有参数,并对要使用defa的参数使用关键字default
ult值
create function dbo.GetIt(@P1 int = -1) returns int
as
begin
return @P1;
end
go
select dbo.GetIt(default);
结果:
-1
发件人:
当函数的参数具有默认值时,关键字
调用函数以检索
默认值。此行为不同于将参数用于
存储过程中省略参数的默认值
也表示默认值。但是,默认关键字不是
使用EXECUTE调用标量函数时需要
声明
我已经添加了一个关于如何设置和调用它的示例。请输入完整的函数定义。错误可能在函数体中,而不是在您对它的调用中。