首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >添加订单状态代码说明

添加订单状态代码说明
EN

Stack Overflow用户
提问于 2019-03-12 05:03:38
回答 1查看 258关注 0票数 2

代码:

代码语言:javascript
复制
CREATE OR REPLACE FUNCTION STATUS_DESC_SF 
(
  P_STATUS_ID IN bb_basketstatus.IDSTAGE%type 
)
RETURN VARCHAR2 AS 
    lv_idstage bb_basketstatus.IDSTAGE%type;

BEGIN
    select (CASE
            WHEN IDSTAGE = 1 THEN
                'Order submitted'
            WHEN IDSTAGE = 2 THEN
                'Accepted, sent to shipping'
            WHEN IDSTAGE = 3 THEN
                'Back-ordered'
            WHEN IDSTAGE = 4 THEN
                'Cancelled'
            ELSE
                'Shipped'
            END) STAGE_ID
        INTO lv_idstage
    from bb_basketstatus
    where idbasket = P_STATUS_ID;
  RETURN lv_idstage;
END STATUS_DESC_SF;

select idstage, status_desc_sf(idstage) status_desc
from bb_basketstatus
where idbasket = 4;

问题:

当购物者返回网站检查订单状态时,将显示BB_BASKETSTATUS表中的信息。但是,在BB_BASKETSTATUS表中只提供状态代码,而不提供状态描述。创建一个名为STATUS_DESC_SF的函数,该函数接受阶段ID并返回状态描述。阶段ID的说明如表6-3所示。测试SELECT语句中的函数,该语句检索篮子4的BB_BASKETSTATUS表中的所有行,并显示阶段ID及其描述。

故事:

我知道我写的存储函数是正确的,因为当它被拆分出来并拥有select语句时,它就可以工作了。当我将它添加到函数中时,它不起作用。我尝试切换参数和局部变量lv_idstage,它什么也不起作用。我确实从sql代码中得到了一些信息,但是对于idstagestatus_desc,状态的描述是1 | (null)。如果你已经弄明白了,你能给我解释一下这是怎么得到一个"(null)“的吗?我不知道它是怎么做到的。

谢谢你的帮助!!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-12 05:33:55

似乎你的函数中不需要查询,只需要一条CASE语句:

代码语言:javascript
复制
CREATE OR REPLACE FUNCTION STATUS_DESC_SF (
    P_STATUS_ID IN bb_basketstatus.IDSTAGE%type)
    RETURN VARCHAR2 AS 
  lv_status_desc varchar2(100);

BEGIN
  lv_status_desc :=  
       CASE WHEN P_STATUS_ID = 1 THEN 'Order submitted'
            WHEN P_STATUS_ID = 2 THEN 'Accepted, sent to shipping'
            WHEN P_STATUS_ID = 3 THEN 'Back-ordered'
            WHEN P_STATUS_ID = 4 THEN 'Cancelled'
            ELSE 'Shipped' END;

  return lv_status_desc;
end;
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55110375

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档