sql - 函数总是返回 null
问题描述
我创建了一个函数,它需要两个数字和运算类型来计算结果。不幸的是,这个函数的所有结果都是空的。
CREATE FUNCTION DBO.CALC
(@NUMBER1 FLOAT, @OPERATION VARCHAR, @NUMBER2 FLOAT)
RETURNS FLOAT
BEGIN
DECLARE @RESULT FLOAT
SET @RESULT = CASE
WHEN @OPERATION = 'DODAWANIE' THEN @NUMBER1 + @NUMBER2
WHEN @OPERATION = 'ODEJMOWANIE' THEN @NUMBER1 - @NUMBER2
WHEN @OPERATION = 'MNOZENIE' THEN @NUMBER1 * @NUMBER2
WHEN @OPERATION = 'DZIELENIE' THEN @NUMBER1 / @NUMBER2
ELSE NULL
END
RETURN @RESULT
END
SELECT
DBO.CALC(2, 'DODAWANIE', 1),
DBO.CALC(2, 'ODEJMOWANIE', 1),
DBO.CALC(2, 'MNOZENIE', 1),
DBO.CALC(2, 'DZIELENIE', 1)
解决方案
您需要在需要添加到的函数中指定LENGTH
使用VARCHAR
so 的时间:LENGTH
@OPERATION VARCHAR(LENGTH)
CREATE FUNCTION DBO.CALC(@NUMBER1 FLOAT, @OPERATION VARCHAR(LENGTH), @NUMBER2 FLOAT)
RETURNS FLOAT
BEGIN
DECLARE @RESULT FLOAT
SET @RESULT =CASE
WHEN @OPERATION ='DODAWANIE' THEN @NUMBER1 +@NUMBER2
WHEN @OPERATION ='ODEJMOWANIE' THEN @NUMBER1-@NUMBER2
WHEN @OPERATION ='MNOZENIE' THEN @NUMBER1*@NUMBER2
WHEN @OPERATION ='DZIELENIE' THEN @NUMBER1/@NUMBER2
ELSE NULL
END
RETURN @RESULT
END
SELECT DBO.CALC(2,'DODAWANIE',1), DBO.CALC(2,'ODEJMOWANIE',1),
DBO.CALC(2,'MNOZENIE',1), DBO.CALC(2,'DZIELENIE',1)
推荐阅读
- windows - 仅在运行脚本时出现“RPC 服务器不可用”
- tuckey-urlrewrite-filter - Tuckey URLRewriteFilter 替代方案
- linux - 根据输出从配置文件中解析变量
- oauth-2.0 - 没有电子邮件的 Azure AD B2C 响应?
- html - 修复子菜单以在切换或悬停时显示
- r - 从 .rmd 文件运行外部 .rmd 文件 - R
- spring-data-jpa - 在spring data jpa中将一个字段标记为一个数据源但不是另一个数据源的瞬态
- javascript - 如何根据活动选项卡的 url 更改 chrome.getCookies 中的 url 参数
- json - 仅显示 Object.keys 的第一个元素
- javascript - 是否存在强制所有外部链接和横幅广告在新窗口中打开的代码?