Sql Server Case Statement gives me errors in user-defined function(SQL Server CASE语句在用户定义函数中出现错误)
本文介绍了SQL Server CASE语句在用户定义函数中出现错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想在我的用户定义函数中使用CASE语句,因为我需要匹配许多术语。我可以使用表进行匹配,但这样就不能将其放入计算列定义中。这适用于IF语句:
CREATE FUNCTION MaraSizeNumber
(
@ms varchar
)
RETURNS varchar
AS
BEGIN
IF ms = '16-18' RETURN '1'
ELSE IF ms = '18-20' RETURN '2'
ELSE IF ms = '20-22' RETURN '3'
ELSE IF ms = '22+' RETURN '4'
ELSE IF ms = '24+' RETURN '5'
ELSE IF ms = '14-16' RETURN '7'
ELSE RETURN 'BAD'
END
但对于使用大小写的原始样式.当使用挡路时,我会收到错误消息。
CREATE FUNCTION MaraSizeCaseExample
(
@ms varchar
)
RETURNS varchar
AS
BEGIN
CASE ms
WHEN '16-18' THEN RETURN '1'
WHEN '18-20' THEN RETURN '2'
WHEN '20-22' THEN RETURN '3'
WHEN '22+' THEN RETURN '4'
WHEN '24+' THEN RETURN '5'
WHEN '14-16' THEN RETURN '7'
ELSE RETURN 'BAD'
END
END
我收到错误的大小写语法错误和WHEN部分的语法不正确。
我已经正确地对所有内容进行了批处理,因为我上一个创建函数挡路以GO结尾,并且根据案例文档,我拥有正确的语法。
我正在构建一个更大的标量函数,它将使用其他标量函数在我们的系统中生成对应于其他参数的产品编码。最好能够使用案例,因为生产编码取决于产品和客户。
在CREATE Function行的第二个示例中,我还收到一个额外的错误,指出"语法不正确:‘CREATE Function’必须是批处理中的唯一语句",但在其他内容相同的情况下,IFS不会出现该错误。
我做错了什么,还是只允许在SQL查询中使用大小写,而不允许在标量函数中使用大小写?错误消息来自SQL Server Management Studio的摆动错误消息系统。推荐答案
CASE语句应如下所示:
RETURN CASE @ms
WHEN '16-18' THEN '1'
WHEN '18-20' THEN '2'
WHEN '20-22' THEN '3'
WHEN '22+' THEN '4'
WHEN '24+' THEN '5'
WHEN '14-16' THEN '7'
ELSE 'BAD'
END
这篇关于SQL Server CASE语句在用户定义函数中出现错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:SQL Server CASE语句在用户定义函数中出现错误
基础教程推荐
猜你喜欢
- 将数据从 MS SQL 迁移到 PostgreSQL? 2022-01-01
- 如何在 SQL Server 的嵌套过程中处理事务? 2021-01-01
- 在 VB.NET 中更新 SQL Server DateTime 列 2021-01-01
- SQL Server 2016更改对象所有者 2022-01-01
- 无法在 ubuntu 中启动 mysql 服务器 2021-01-01
- SQL Server:只有 GROUP BY 中的最后一个条目 2021-01-01
- 使用pyodbc“不安全"的Python多处理和数据库访问? 2022-01-01
- Sql Server 字符串到日期的转换 2021-01-01
- ERROR 2006 (HY000): MySQL 服务器已经消失 2021-01-01
- SQL Server 中单行 MERGE/upsert 的语法 2021-01-01