利用oracel的存储过程把当前有的值更新到另外一列上

2023-11-08 14:18

本文主要是介绍利用oracel的存储过程把当前有的值更新到另外一列上,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

环比值的生成

说明:在原有的数据基础之上把指标的执行值,根据月份,把本月的放到上月的环比值字里其它字段保持不变,以此类推。

 

 

create or replace procedure HBZ_UPDATE(tableName varchar2,startDate varchar2,endDate varchar2) is
v_tableName varchar2(100);
v_count_ywsj number;
v_sql varchar2(2000);--拼SQL语句

begin
  v_tableName:=tableName;
   SELECT count(1) into v_count_ywsj FROM dmc_model A,DMC_MODEL_DIM B, dmc_dimension C
          WHERE A.TABLENAME = v_tableName and  A.RECORDID = B.MODELID AND B.DIMID = C.RECORDID AND C.CODE='YWSJ';
   if v_count_ywsj = 1 then
     v_sql := 'update '|| v_tableName || ' A set HBZ = (SELECT ZXZ FROM ' || v_tableName || ' B  WHERE 1=1';
     declare cursor c_rows is
        SELECT C.CODE  FROM dmc_model A,DMC_MODEL_DIM B, dmc_dimension C  WHERE A.TABLENAME = v_tableName and  A.RECORDID = B.MODELID AND B.DIMID = C.RECORDID;
        c_row c_rows%rowtype;
        BEGIN
        for c_row in c_rows loop
            if c_row.code = 'YWSJ' then 
               v_sql :=   v_sql || ' AND A.YWSJ=add_months(B.YWSJ,1)';
            else
                v_sql :=   v_sql || ' AND ' || 'A.' || c_row.code || '= B.' || c_row.code ;
            end if; 
        end loop;
        END;
        v_sql := v_sql || ' AND A.ZBID = B.ZBID) where A.YWSJ >=''' || startDate || ''' AND A.YWSJ <=''' ||endDate||'''';
        dbms_output.put_line(v_sql);
        execute immediate v_sql;
        commit;
   end if;
   

end HBZ_UPDATE;

同比值只需要该一下就好了

create or replace procedure TBZ_UPDATE(tableName varchar2,startDate varchar2,endDate varchar2) is
v_tableName varchar2(100);
v_count_ywsj number;
v_sql varchar2(2000);--拼SQL语句

begin
  v_tableName:=tableName;
   SELECT count(1) into v_count_ywsj FROM dmc_model A,DMC_MODEL_DIM B, dmc_dimension C
          WHERE A.TABLENAME = v_tableName and  A.RECORDID = B.MODELID AND B.DIMID = C.RECORDID AND C.CODE='YWSJ';
   if v_count_ywsj = 1 then
     v_sql := 'update '|| v_tableName || ' A set TBZ = (SELECT ZXZ FROM ' || v_tableName || ' B  WHERE 1=1';
     declare cursor c_rows is
        SELECT C.CODE  FROM dmc_model A,DMC_MODEL_DIM B, dmc_dimension C  WHERE A.TABLENAME = v_tableName and  A.RECORDID = B.MODELID AND B.DIMID = C.RECORDID;
        c_row c_rows%rowtype;
        BEGIN
        for c_row in c_rows loop
            if c_row.code = 'YWSJ' then 
               v_sql :=   v_sql || ' AND A.YWSJ=add_months(B.YWSJ,6)';
            else
                v_sql :=   v_sql || ' AND ' || 'A.' || c_row.code || '= B.' || c_row.code ;
            end if; 
        end loop;
        END;
        v_sql := v_sql || ' AND A.ZBID = B.ZBID) where A.YWSJ >=''' || startDate || ''' AND A.YWSJ <=''' ||endDate||'''';
        dbms_output.put_line(v_sql);
        execute immediate v_sql;
        commit;
   end if;
   

end TBZ_UPDATE;
 

这篇关于利用oracel的存储过程把当前有的值更新到另外一列上的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/370412

相关文章

PyInstaller打包selenium-wire过程中常见问题和解决指南

《PyInstaller打包selenium-wire过程中常见问题和解决指南》常用的打包工具PyInstaller能将Python项目打包成单个可执行文件,但也会因为兼容性问题和路径管理而出现各种运... 目录前言1. 背景2. 可能遇到的问题概述3. PyInstaller 打包步骤及参数配置4. 依赖

MySQL更新某个字段拼接固定字符串的实现

《MySQL更新某个字段拼接固定字符串的实现》在MySQL中,我们经常需要对数据库中的某个字段进行更新操作,本文就来介绍一下MySQL更新某个字段拼接固定字符串的实现,感兴趣的可以了解一下... 目录1. 查看字段当前值2. 更新字段拼接固定字符串3. 验证更新结果mysql更新某个字段拼接固定字符串 -

golang获取当前时间、时间戳和时间字符串及它们之间的相互转换方法

《golang获取当前时间、时间戳和时间字符串及它们之间的相互转换方法》:本文主要介绍golang获取当前时间、时间戳和时间字符串及它们之间的相互转换,本文通过实例代码给大家介绍的非常详细,感兴趣... 目录1、获取当前时间2、获取当前时间戳3、获取当前时间的字符串格式4、它们之间的相互转化上篇文章给大家介

将Mybatis升级为Mybatis-Plus的详细过程

《将Mybatis升级为Mybatis-Plus的详细过程》本文详细介绍了在若依管理系统(v3.8.8)中将MyBatis升级为MyBatis-Plus的过程,旨在提升开发效率,通过本文,开发者可实现... 目录说明流程增加依赖修改配置文件注释掉MyBATisConfig里面的Bean代码生成使用IDEA生

C# WinForms存储过程操作数据库的实例讲解

《C#WinForms存储过程操作数据库的实例讲解》:本文主要介绍C#WinForms存储过程操作数据库的实例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、存储过程基础二、C# 调用流程1. 数据库连接配置2. 执行存储过程(增删改)3. 查询数据三、事务处

JSON Web Token在登陆中的使用过程

《JSONWebToken在登陆中的使用过程》:本文主要介绍JSONWebToken在登陆中的使用过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录JWT 介绍微服务架构中的 JWT 使用结合微服务网关的 JWT 验证1. 用户登录,生成 JWT2. 自定义过滤

java中使用POI生成Excel并导出过程

《java中使用POI生成Excel并导出过程》:本文主要介绍java中使用POI生成Excel并导出过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录需求说明及实现方式需求完成通用代码版本1版本2结果展示type参数为atype参数为b总结注:本文章中代码均为

MySQL新增字段后Java实体未更新的潜在问题与解决方案

《MySQL新增字段后Java实体未更新的潜在问题与解决方案》在Java+MySQL的开发中,我们通常使用ORM框架来映射数据库表与Java对象,但有时候,数据库表结构变更(如新增字段)后,开发人员可... 目录引言1. 问题背景:数据库与 Java 实体不同步1.1 常见场景1.2 示例代码2. 不同操作

mysql如何查看当前连接数

《mysql如何查看当前连接数》:本文主要介绍mysql如何查看当前连接数问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录mysql查看当前连接数查看mysql数据库允许最大连接数总结mysql查看当前连接数查看当前连接数SHOW STATUS LIKE

SpringCloud之LoadBalancer负载均衡服务调用过程

《SpringCloud之LoadBalancer负载均衡服务调用过程》:本文主要介绍SpringCloud之LoadBalancer负载均衡服务调用过程,具有很好的参考价值,希望对大家有所帮助,... 目录前言一、LoadBalancer是什么?二、使用步骤1、启动consul2、客户端加入依赖3、以服务