利用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

相关文章

Flutter监听当前页面可见与隐藏状态的代码详解

《Flutter监听当前页面可见与隐藏状态的代码详解》文章介绍了如何在Flutter中使用路由观察者来监听应用进入前台或后台状态以及页面的显示和隐藏,并通过代码示例讲解的非常详细,需要的朋友可以参考下... flutter 可以监听 app 进入前台还是后台状态,也可以监听当http://www.cppcn

Spring AI集成DeepSeek三步搞定Java智能应用的详细过程

《SpringAI集成DeepSeek三步搞定Java智能应用的详细过程》本文介绍了如何使用SpringAI集成DeepSeek,一个国内顶尖的多模态大模型,SpringAI提供了一套统一的接口,简... 目录DeepSeek 介绍Spring AI 是什么?Spring AI 的主要功能包括1、环境准备2

SpringBoot集成图片验证码框架easy-captcha的详细过程

《SpringBoot集成图片验证码框架easy-captcha的详细过程》本文介绍了如何将Easy-Captcha框架集成到SpringBoot项目中,实现图片验证码功能,Easy-Captcha是... 目录SpringBoot集成图片验证码框架easy-captcha一、引言二、依赖三、代码1. Ea

Golang基于内存的键值存储缓存库go-cache

《Golang基于内存的键值存储缓存库go-cache》go-cache是一个内存中的key:valuestore/cache库,适用于单机应用程序,本文主要介绍了Golang基于内存的键值存储缓存库... 目录文档安装方法示例1示例2使用注意点优点缺点go-cache 和 Redis 缓存对比1)功能特性

pycharm远程连接服务器运行pytorch的过程详解

《pycharm远程连接服务器运行pytorch的过程详解》:本文主要介绍在Linux环境下使用Anaconda管理不同版本的Python环境,并通过PyCharm远程连接服务器来运行PyTorc... 目录linux部署pytorch背景介绍Anaconda安装Linux安装pytorch虚拟环境安装cu

SpringBoot项目注入 traceId 追踪整个请求的日志链路(过程详解)

《SpringBoot项目注入traceId追踪整个请求的日志链路(过程详解)》本文介绍了如何在单体SpringBoot项目中通过手动实现过滤器或拦截器来注入traceId,以追踪整个请求的日志链... SpringBoot项目注入 traceId 来追踪整个请求的日志链路,有了 traceId, 我们在排

Spring Boot 3 整合 Spring Cloud Gateway实践过程

《SpringBoot3整合SpringCloudGateway实践过程》本文介绍了如何使用SpringCloudAlibaba2023.0.0.0版本构建一个微服务网关,包括统一路由、限... 目录引子为什么需要微服务网关实践1.统一路由2.限流防刷3.登录鉴权小结引子当前微服务架构已成为中大型系统的标

Java中对象的创建和销毁过程详析

《Java中对象的创建和销毁过程详析》:本文主要介绍Java中对象的创建和销毁过程,对象的创建过程包括类加载检查、内存分配、初始化零值内存、设置对象头和执行init方法,对象的销毁过程由垃圾回收机... 目录前言对象的创建过程1. 类加载检查2China编程. 分配内存3. 初始化零值4. 设置对象头5. 执行

SpringBoot整合easy-es的详细过程

《SpringBoot整合easy-es的详细过程》本文介绍了EasyES,一个基于Elasticsearch的ORM框架,旨在简化开发流程并提高效率,EasyES支持SpringBoot框架,并提供... 目录一、easy-es简介二、实现基于Spring Boot框架的应用程序代码1.添加相关依赖2.添

SpringBoot中整合RabbitMQ(测试+部署上线最新完整)的过程

《SpringBoot中整合RabbitMQ(测试+部署上线最新完整)的过程》本文详细介绍了如何在虚拟机和宝塔面板中安装RabbitMQ,并使用Java代码实现消息的发送和接收,通过异步通讯,可以优化... 目录一、RabbitMQ安装二、启动RabbitMQ三、javascript编写Java代码1、引入