繁体   English   中英

我们如何将空参数传递给 SQL 函数?

[英]How can we pass null parameter into SQL Function?

大家好,我创建了一个缩放器函数,我想在其中将参数 @aCOURSENAME 传递为 null,但是当我尝试在没有参数的情况下执行它时,它会给出参数不足的错误。 尽管我将 null 作为参数传递给函数,但为什么会发生这种情况

这是我的功能

CREATE FUNCTION UFN_XX_GETSTUCOUNT_ONCOURSE(@aCOURSENAME VARCHAR(20) = NULL)
RETURNS INT
AS
BEGIN 

    RETURN (SELECT  COUNT(SID) AS STUDENT  FROM BATCH B  
            INNER JOIN ENROLLMENT E 
            ON B.BATCHID = E.BATCHID
            INNER JOIN COURSE C 
            ON C.COURSEID = B.COURSEID
            WHERE COURSENAME = @aCOURSENAME
            GROUP BY COURSENAME)

END 

GO

SELECT DBO.UFN_XX_GETSTUCOUNT_ONCOURSE()

执行时没有参数会出现参数不足的错误。

调用用户定义的SQL 函数 (*) 时不能省略参数。 是的,我知道这很糟糕,我不知道为什么会这样(可能是 30 年前 SQL 解析器中的一些遗留决定)。 尽管如此,您必须明确传递 NULL :

SELECT DBO.UFN_XX_GETSTUCOUNT_ONCOURSE(NULL)

或“隐式”使用 DEFAULT:

SELECT DBO.UFN_XX_GETSTUCOUNT_ONCOURSE(DEFAULT)

是的,我们都讨厌这一点,并且几十年来一直在抱怨它。

(* -- 烦人的是,一些系统函数确实允许可选参数)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM