相关疑难解决方法(0)

T-SQL - 具有默认参数的函数

我有这个脚本:

CREATE FUNCTION dbo.CheckIfSFExists(@param1 INT, @param2 BIT = 1 )
RETURNS BIT
AS
BEGIN
    IF EXISTS ( bla bla bla )
        RETURN 1;
    RETURN 0;
END
GO
Run Code Online (Sandbox Code Playgroud)

我想以这种方式在一个过程中使用它:

IF dbo.CheckIfSFExists( 23 ) = 0
    SET @retValue = 'bla bla bla';
Run Code Online (Sandbox Code Playgroud)

但我得到错误:

为程序或函数dbo.CheckIfSFExists提供的参数数量不足.

为什么不起作用?

t-sql function default-parameters

145
推荐指数
3
解决办法
14万
查看次数

更改SQL Server函数以接受新的可选参数

我已经在SQL Server 2005中有一个函数:

ALTER function [dbo].[fCalculateEstimateDate] (@vWorkOrderID numeric)
Returns varchar(100)  AS
Begin
  <Function Body>
End
Run Code Online (Sandbox Code Playgroud)

我想修改此函数以接受另外的可选参数@ToDate.我将在函数中添加逻辑,如果@Todate提供,那么继续使用现有代码执行其他操作.

我将功能修改为:

ALTER function [dbo].[fCalculateEstimateDate] (@vWorkOrderID numeric,@ToDate DateTime=null)
Returns varchar(100)  AS
Begin
  <Function Body>
End
Run Code Online (Sandbox Code Playgroud)

现在我可以调用函数:

SELECT dbo.fCalculateEstimateDate(647,GETDATE())
Run Code Online (Sandbox Code Playgroud)

但它在跟随电话时出错:

SELECT dbo.fCalculateEstimateDate(647)
Run Code Online (Sandbox Code Playgroud)

为程序或函数dbo.fCalculateEstimateDate提供的参数数量不足.

根据我的理解不应该发生.

我错过了什么吗?提前致谢.

sql sql-server-2005

61
推荐指数
2
解决办法
9万
查看次数

SQL Server中的可选参数

我有一个用户定义的函数,在许多存储过程中使用它将返回一些值.如果我可以添加一个新的可选参数.

如果我没有传递任何值,它应该为null,如果我传递一些值,它应该采取它.我不想去更改所有存储过程来执行此操作.

示例代码

dbo.CalculateAverageForUser(userid int)
Run Code Online (Sandbox Code Playgroud)

我可以用吗 dbo.CalculateAverageForUser(userid int, type NVARCHAR(10) = NULL)

sql sql-server-2005

10
推荐指数
1
解决办法
2万
查看次数