【问题标题】:migration oracle to mariadb将 oracle 迁移到 mariadb
【发布时间】:2022-10-19 17:31:48
【问题描述】:

如何在 mariadb 中重写以下代码,我不能在 mariadb 中出现异常部分。如何在 mariadb 中编写异常部分? 例子:

BEGIN
      SELECT NVL(COL_LEN, 0) AS COL_LEN,
             COL_VALUE,
             ZEROCAL_DIV,
             TO_NUMBER(NVL(STR_POINT, 1)),
             TO_NUMBER(NVL(END_POINT, 9999)),
             DECODE(NVL(STR_POINT, 0), 0, 0, NVL(STR_POINT, 0) - 1)
        INTO V_COL_LEN,
             V_COL_VALUE,
             V_ZEROCAL_DIV,
             V_STR_POINT,
             V_END_POINT,
             V_MINUS_POINT
        FROM PJ_TD_PRSATTCAL
       WHERE 1 = 1
         AND COMPANY_CD = IN_COMPANY_CD
         AND PRS_CLASS_CD = IN_PRS_CLASS_CD
         AND PRS_DIV_CD = IN_PRS_DIV_CD
         AND PRS_CD = IN_PRS_CD
         AND PRS_ATT_CD = V_PRS_ATT_CD
         AND COL_ID = '9999999'
       ORDER BY SEQ;
    EXCEPTION
      WHEN OTHERS THEN
        V_COL_LEN     := 0;
        V_COL_VALUE   := '';
        V_STR_POINT   := 1;
        V_END_POINT   := 9999;
        V_MINUS_POINT := 0;
    END;

【问题讨论】:

  • 那已经返回表格了,不是吗?
  • 如果您需要动态列数,那么您应该在应用程序层处理这个问题。
  • 名为age 的列似乎很奇怪,因为值基本上每天都在变化。

标签: mariadb


【解决方案1】:

如果值不应该显示,我会简单地为有问题的列返回 null,而不是有两个不同的查询。

select id, name, 
       case 
         when a = 1 then null
         else age 
       end as age
from users;

【讨论】:

    猜你喜欢
    • 2018-01-13
    • 1970-01-01
    • 2018-07-11
    • 1970-01-01
    • 1970-01-01
    • 2011-11-25
    • 2018-11-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多