Stored procedures 如何通过在存储过程中使用insert在DB2中使用CASE/WHEN?

Stored procedures 如何通过在存储过程中使用insert在DB2中使用CASE/WHEN?,stored-procedures,db2,switch-statement,Stored Procedures,Db2,Switch Statement,我有一个DB2的存储过程,我想在名为SEASON的字段中填充W表示冬季,S表示夏季。程序已完成,但我无法处理逻辑。有人能告诉我这是怎么回事吗 这适用于数据仓库中的维度表 插入ABC.TIME\u维度( 日期, 季节, 克特尔) 价值观( 日期(myDate), 案例 当月份(myDate)=1时,则 设定季节='W'; 当月份(myDate)=2时 设定季节='W'; 当月份(myDate)=2时 设置季节='S'; 其他的 设定季节='X'; 结案。 季度(装货日期); 我在存储过程中得到一

我有一个DB2的存储过程,我想在名为SEASON的字段中填充W表示冬季,S表示夏季。程序已完成,但我无法处理逻辑。有人能告诉我这是怎么回事吗

这适用于数据仓库中的维度表

插入ABC.TIME\u维度(
日期,
季节,
克特尔)
价值观(
日期(myDate),
案例
当月份(myDate)=1时,则
设定季节='W';
当月份(myDate)=2时
设定季节='W';
当月份(myDate)=2时
设置季节='S';
其他的
设定季节='X';
结案。
季度(装货日期);

我在存储过程中得到一个错误

一种方法(还有其他方法):

注意:不要对表列名使用保留字

在存储过程中执行此操作的一种方法(还有其他方法):

注意:不要对表列名使用保留字


查看可在其他语句中使用的描述

它不同于传统

您必须在您的案例中使用
案例表达式

INSERT into ABC.TIME_DIMEMSION (
    DATE,
    SEASON,
    QUERTER)
VALUES(
    DATE(myDate),
    CASE MONTH(myDate)
      WHEN 1 THEN 'X'
      WHEN 2 THEN 'Y'
             ELSE 'Z'
    END,
    QUARTER(loaddate)
);

-- or

INSERT into ABC.TIME_DIMEMSION (
    DATE,
    SEASON,
    QUERTER)
VALUES(
    DATE(current timestamp),
    CASE 
      WHEN MONTH(current timestamp)=1 THEN 'X'
      WHEN MONTH(current timestamp)=2 THEN 'Y'
                                      ELSE 'Z'
    END,
    QUARTER(current timestamp)
);

查看可在其他语句中使用的描述

它不同于传统

您必须在您的案例中使用
案例表达式

INSERT into ABC.TIME_DIMEMSION (
    DATE,
    SEASON,
    QUERTER)
VALUES(
    DATE(myDate),
    CASE MONTH(myDate)
      WHEN 1 THEN 'X'
      WHEN 2 THEN 'Y'
             ELSE 'Z'
    END,
    QUARTER(loaddate)
);

-- or

INSERT into ABC.TIME_DIMEMSION (
    DATE,
    SEASON,
    QUERTER)
VALUES(
    DATE(current timestamp),
    CASE 
      WHEN MONTH(current timestamp)=1 THEN 'X'
      WHEN MONTH(current timestamp)=2 THEN 'Y'
                                      ELSE 'Z'
    END,
    QUARTER(current timestamp)
);