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语句在用户定义函数中出现错误


猜你喜欢
- 创建索引时,具有 mysql 数据库迁移的实体框架失败 2022-01-01
- HEROKU - 无法运行 git push heroku master 2021-01-01
- 如何在oracle中获取字符串最右边的10个位置 2021-01-01
- SSMS 中的权限问题:“对象 'extended_properties'、数据库 'mssqlsystem_resource'、... 错误 229)上的 SELECT 权限被拒绝" 2022-01-01
- Oracle SQL 转置 2022-01-01
- SQL Server 将 Varchar 转换为日期时间 2021-01-01
- 在 Oracle 中创建 CTE 2022-01-01
- 如何将uuid存储为数字? 2021-01-01
- MySql 错误 150 - 外键 2021-01-01
- MySQL(Windows10)使用 MyISAM 表进行 FULLTEXT 搜索不起作用 2022-01-01