gpt4 book ai didi

mysql - 将 IF ELSE 更改为 CASE

转载 作者:行者123 更新时间:2023-11-29 04:56:30 29 4
gpt4 key购买 nike

我的存储过程中有以下 block 。它按预期工作。但我想将其更改为 CASE,以便以后可以根据需要添加更多条件。

IF parm_status='ALL' THEN 
IF op_type='CREDIT' THEN
set v_wherestr =concat( v_wherestr, " and (tran.operation='CREDIT')");
ELSEIF op_type='UNCREDIT' THEN
set v_wherestr = concat( v_wherestr, " and (tran.operation='CREDIT' OR tran.operation='UNCREDIT')");
END IF;

...
...

END IF;

最佳答案

基本上,它会是:

IF parm_status='ALL' THEN 
CASE op_type
WHEN 'CREDIT' THEN set v_wherestr =concat( v_wherestr, " and (tran.operation='CREDIT')");
WHEN 'UNCREDIT' THEN set v_wherestr = concat( v_wherestr, " and (tran.operation='CREDIT' OR tran.operation='UNCREDIT')");
END;

...
...

END IF;

http://www.java2s.com/Code/SQL/Flow-Control/UseCASEWHENforstringvalue.htm

这将保留您的原始结构,但将 IF THEN 语句替换为 CASE 语句。但是,我会查看您的实际查询,看看是否有更好的方法来完成您想要做的事情。尽管这是一个存储过程,但执行计划很可能是一团糟。您可能想尝试通过 UNION ALL 或其他方式组合多个查询,以使其更加优化。很抱歉,我无法在这里为您提供更多帮助,但这实际上取决于您的整体查询和数据结构。

关于mysql - 将 IF ELSE 更改为 CASE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6097024/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com