这两天有个需求:在BI项目驾驶舱上有一个12个月的趋势图,在后台数据表中是有12列存放每个月的数据,另外还有一列用来存放当月的值;其中那12列的列名是有一定规律的qs_月份,打算用更新的方法。

 

FOR v_loop IN 1 .. v_max_month
    LOOP
      v_column_name := 'v' || v_loop;
      v_sql         := 'UPDATE DM_D_YGGSZB T SET ' || v_column_name || '=(SELECT ' || v_column_name ||
                       ' FROM DM_D_YGGSZB F WHERE RQ= ' || v_loop_date ||
                       ' AND T.ZBDM=F.ZBDM  AND T.CJ=F.CJ AND T.ZBLX=F.ZBLX AND T.ZZDM=F.ZZDM) WHERE T.RQ= ' || v_date;
      EXECUTE IMMEDIATE v_sql;
      COMMIT;
    END LOOP;



动态添加列


DECLARE 
v_var VARCHAR2(200);
BEGIN
FOR i IN 1 .. 38 LOOP
v_var:= 'ALTER TABLE ORADS.C'||i||'_OUTBOUNDL_CHEADER ADD (qezy CHAR(1))';
EXECUTE IMMEDIATE v_var;
END LOOP;
END ;

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐