oracle - SQL 函数和案例返回问题
问题描述
为简单起见,我有一个表,其中有一个名为 IDSTAGE 的列,其中包含一个数字(1 到 5),并且我正在尝试创建一个函数来获取该数字并返回一个描述。这是我所拥有的:
FUNCTION STATUS_DESC_SF (p_idstage IN BB_BASKETSTATUS.IDSTAGE%TYPE)
RETURN VARCHAR2
AS
BEGIN
CASE
WHEN p_idstage = 1 THEN RETURN '1 - Order Submitted'
WHEN p_idstage = 2 THEN RETURN '2 - Accepted, sent to shipping'
WHEN p_idstage = 3 THEN RETURN '3 - Back-ordered'
WHEN p_idstage = 4 THEN RETURN '4 - Cancelled'
WHEN p_idstage = 5 THEN RETURN '5 - Shipped'
ELSE RETURN 'Null'
END CASE;
END STATUS_DESC_SF;
当我运行它并显示错误时,我会从 when 开始的每一行得到以下信息。
6/3 PLS-00103: Encountered the symbol "WHEN" when expecting one of
the following:
* & = - + ; < / > at in is mod remainder not rem
<an exponent (**)> <> or != or ~= >= <= <> and or like like2
like4 likec between || multiset member submultiset
The symbol ";" was substituted for "WHEN" to continue.
我已经尽职尽责并仔细检查了我的语法,据我所知,我没有做错任何事。我怀疑它不喜欢 THEN RETURN 部分,但这不是错误出现的地方。
解决方案
试试这个:
RETURN CASE
WHEN p_idstage = 1 THEN '1 - Order Submitted'
WHEN p_idstage = 2 THEN '2 - Accepted, sent to shipping'
WHEN p_idstage = 3 THEN '3 - Back-ordered'
WHEN p_idstage = 4 THEN '4 - Cancelled'
WHEN p_idstage = 5 THEN '5 - Shipped'
ELSE 'Null'
END;
案例是一个表达式
推荐阅读
- django - 我可以将单一代码库用于 Web 开发和移动应用程序吗?
- javascript - 当我们滚动到特定位置时为 div 设置动画
- javascript - 扩展类 SharedArrayBuffer 导致“构造函数 SharedArrayBuffer 需要‘新’”
- r - R - 获取数据框的名称并收集到公式中
- javascript - 如何更改 Electron 应用程序的图标
- java - 更新记录时数组越界异常
- r - 当列名匹配向量中的字符时,提取数据框中的列
- java - 使用递归在特定索引处反转字符串
- python - 如何删除对应于 Python X 列中已删除异常值的相应 Y 值
- c++ - 如何在 cv::Mat 的一部分中设置零值