Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 是否可以像在存储过程中一样在函数中使用默认参数?_Sql Server_Sql Server 2008_Sql Function - Fatal编程技术网

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调用标量函数时需要 声明


我已经添加了一个关于如何设置和调用它的示例。请输入完整的函数定义。错误可能在函数体中,而不是在您对它的调用中。