SQL函数参数默认为select
函数SQL函数参数默认为select,sql,function,parameters,azure-sql-database,parameter-passing,Sql,Function,Parameters,Azure Sql Database,Parameter Passing,函数A,标量,返回smallint(一年) 函数B,标量,返回smallint(一个月) 函数C,表格,根据年份和月份显示用户 他们工作得很好 我想将函数C的默认参数设置为来自FuncA和B的参数,如下所示: @year smallint=SELECT FunctA(),@month smallint=SELECT FunctB() 这有什么关系吗 我们使用的是Azure SQL托管实例。您可以使用的东西是 IF @year IS NULL BEGIN SET @year = functa
A
,标量,返回smallint(一年)函数
B
,标量,返回smallint(一个月)函数
C
,表格,根据年份和月份显示用户
他们工作得很好
我想将函数C
的默认参数设置为来自FuncA
和B
的参数,如下所示:
@year smallint=SELECT FunctA(),@month smallint=SELECT FunctB()
这有什么关系吗
我们使用的是Azure SQL托管实例。您可以使用的东西是
IF @year IS NULL
BEGIN
SET @year = functa();
END;
IF @month IS NULL
BEGIN
SET @month = functb();
END;
(或者您没有披露的DBMS中的任何模拟语法)。
如果需要默认值,请将
NULL
s作为参数传递。您使用的是什么RDBMS?Azure SQL。我添加到上面我添加了标签。在将来,准确地标记你的问题会帮助你,因为它会吸引最有能力给你好答案的人的注意力。除非你在SQL2019上尝试过,否则不要使用标量。在表函数中不允许。除非我把“IF”放错了位置好吧,好吧,没有任何细节很难说…@amomy它是允许在多步骤表值函数中使用的。内联表值函数中不允许使用它。如果您有一个内联表值函数,则可以在任何需要@year
的地方使用isnull(@year,functa())
,但这可能会降低性能。您可以使用各种方法来解决这个问题,例如外部应用(选择isnull(@year,functa())作为实际值(year)
,但并不保证它的性能会更好。