存储过程与游标

news2025/1/10 20:53:35
图片描述

在这里插入图片描述

记录开发实例(外包供应商排名报表数据-存储过程)
-- 外包供应商排名报表数据
ALTER PROCEDURE p_getOutsourceSupplierRankingData

AS

BEGIN

-- 每天更新数据,开启游标
DECLARE @years VARCHAR(8)
DECLARE @supplierCode VARCHAR(64)
DECLARE @supplierName VARCHAR (256)
DECLARE @outsourcePersonCode VARCHAR(64)
DECLARE @outsourcePersonName VARCHAR (128)
DECLARE @totalPrice DECIMAL ( 32, 2 )
DECLARE @outsourceItemQuantity VARCHAR(64) 
DECLARE @m1 DECIMAL(32,2)
DECLARE @m2 DECIMAL(32,2)
DECLARE @m3 DECIMAL(32,2)
DECLARE @m4 DECIMAL(32,2)
DECLARE @m5 DECIMAL(32,2)
DECLARE @m6 DECIMAL(32,2)
DECLARE @m7 DECIMAL(32,2)
DECLARE @m8 DECIMAL(32,2)
DECLARE @m9 DECIMAL(32,2)
DECLARE @m10 DECIMAL(32,2)
DECLARE @m11 DECIMAL(32,2)
DECLARE @m12 DECIMAL(32,2)
DECLARE @counts INT = 0 
DECLARE supplier_ranking_cursor CURSOR

	FOR (
		SELECT
			agent_supplier_code,
			agent_supplier_name,
			agent_user_code,
			agent_user_name,
			DATEPART( yy, agent_open_case_time ) AS years,
			COUNT(*) AS quantity
		FROM
			ms_testitem_agent_main 
		WHERE
			valid_ind = '1' 
			AND agent_supplier_code IS NOT NULL 
			AND agent_open_case_time IS NOT NULL 
		GROUP BY
			agent_supplier_code,
			agent_supplier_name,
			agent_user_code,
			agent_user_name,
			DATEPART( yy, agent_open_case_time )
		)
	
-- 打开游标
	OPEN supplier_ranking_cursor;
	
-- 循环游标
	FETCH NEXT 
	FROM
		supplier_ranking_cursor INTO @supplierCode,@supplierName,@outsourcePersonCode,@outsourcePersonName,@years,@outsourceItemQuantity;

	WHILE @@FETCH_STATUS = 0 
	
	BEGIN
					
	SET @counts = (
		SELECT COUNT
			( 1 ) 
		FROM
			ms_outsource_supplier_ranking 
		WHERE
			supplier_code = @supplierCode 
			AND outsource_person_code = @outsourcePersonCode 
			AND years = @years
		)
				
	IF @counts > 0 -- 更新数据
			   
		BEGIN
	
				SET		@m1 = (SELECT ISNULL(SUM(rmb_actual_agent_price),0) FROM ms_testitem_agent_main  WHERE  DATEPART(mm, agent_open_case_time)   = 1 AND agent_supplier_code = @supplierCode AND  agent_user_code =	@outsourcePersonCode AND DATEPART(yy, agent_open_case_time) = @years)
				
				SET 	@m2 = (SELECT ISNULL(SUM(rmb_actual_agent_price),0) FROM ms_testitem_agent_main  WHERE  DATEPART(mm, agent_open_case_time)   = 2 AND agent_supplier_code = @supplierCode AND  agent_user_code =	@outsourcePersonCode AND DATEPART(yy, agent_open_case_time) = @years)
				
				SET 	@m3 = (SELECT ISNULL(SUM(rmb_actual_agent_price),0) FROM ms_testitem_agent_main  WHERE  DATEPART(mm, agent_open_case_time)   = 3 AND agent_supplier_code = @supplierCode AND  agent_user_code =	@outsourcePersonCode AND DATEPART(yy, agent_open_case_time) = @years)
				
				SET 	@m4 = (SELECT ISNULL(SUM(rmb_actual_agent_price),0) FROM ms_testitem_agent_main  WHERE  DATEPART(mm, agent_open_case_time)   = 4 AND agent_supplier_code = @supplierCode AND  agent_user_code =	@outsourcePersonCode AND DATEPART(yy, agent_open_case_time) = @years)
				
				SET 	@m5 = (SELECT ISNULL(SUM(rmb_actual_agent_price),0) FROM ms_testitem_agent_main  WHERE  DATEPART(mm, agent_open_case_time)   = 5 AND agent_supplier_code = @supplierCode AND  agent_user_code =	@outsourcePersonCode AND DATEPART(yy, agent_open_case_time) = @years)
				
				SET 	@m6 = (SELECT ISNULL(SUM(rmb_actual_agent_price),0) FROM ms_testitem_agent_main  WHERE  DATEPART(mm, agent_open_case_time)   = 6 AND agent_supplier_code = @supplierCode AND  agent_user_code =	@outsourcePersonCode AND DATEPART(yy, agent_open_case_time) = @years)
				
				SET 	@m7 = (SELECT ISNULL(SUM(rmb_actual_agent_price),0) FROM ms_testitem_agent_main  WHERE  DATEPART(mm, agent_open_case_time)   = 7 AND agent_supplier_code = @supplierCode AND  agent_user_code =	@outsourcePersonCode AND DATEPART(yy, agent_open_case_time) = @years)
				
				SET 	@m8 = (SELECT ISNULL(SUM(rmb_actual_agent_price),0) FROM ms_testitem_agent_main  WHERE  DATEPART(mm, agent_open_case_time)   = 8 AND agent_supplier_code = @supplierCode AND  agent_user_code = @outsourcePersonCode AND DATEPART(yy, agent_open_case_time) = @years)
				
				SET 	@m9 = (SELECT ISNULL(SUM(rmb_actual_agent_price),0) FROM ms_testitem_agent_main  WHERE  DATEPART(mm, agent_open_case_time)   = 9 AND agent_supplier_code = @supplierCode AND  agent_user_code = @outsourcePersonCode AND DATEPART(yy, agent_open_case_time) = @years)
				
				SET 	@m10 = (SELECT ISNULL(SUM(rmb_actual_agent_price),0) FROM ms_testitem_agent_main  WHERE  DATEPART(mm, agent_open_case_time)   = 10 AND agent_supplier_code = @supplierCode AND  agent_user_code = @outsourcePersonCode AND DATEPART(yy, agent_open_case_time) = @years)
				
				SET 	@m11 = (SELECT ISNULL(SUM(rmb_actual_agent_price),0) FROM ms_testitem_agent_main  WHERE  DATEPART(mm, agent_open_case_time)   = 11 AND agent_supplier_code = @supplierCode AND  agent_user_code = @outsourcePersonCode AND DATEPART(yy, agent_open_case_time) = @years)
				
				SET 	@m12 = (SELECT ISNULL(SUM(rmb_actual_agent_price),0) FROM ms_testitem_agent_main  WHERE  DATEPART(mm, agent_open_case_time)   = 12 AND agent_supplier_code = @supplierCode AND  agent_user_code =	@outsourcePersonCode AND DATEPART(yy, agent_open_case_time) = @years )

		    SET   @totalPrice = @m1+@m2+@m3+@m4+@m5+@m6+@m7+@m8+@m9+@m10+@m11+@m12
							
				UPDATE ms_outsource_supplier_ranking SET m1 = @m1 , m2 = @m2 , m3 = @m3 , m4 = @m4 , m5 = @m5 , m6 = @m6 ,m7 = @m7 , m8 = @m8 , m9 = @m9 , m10 = @m10 , m11 = @m11 ,m12 = @m12 , total_price = @totalPrice , outsource_item_quantity = @outsourceItemQuantity	WHERE  years = @years AND  supplier_code = @supplierCode AND outsource_person_code = @outsourcePersonCode
					
		END ;
		
	ELSE -- 插入数据
	
		BEGIN
					
				SET		@m1 = (SELECT ISNULL(SUM(rmb_actual_agent_price),0) FROM ms_testitem_agent_main  WHERE  DATEPART(mm, agent_open_case_time)   = 1 AND agent_supplier_code = @supplierCode AND  agent_user_code =	@outsourcePersonCode AND DATEPART(yy, agent_open_case_time) = @years)
				
				SET 	@m2 = (SELECT ISNULL(SUM(rmb_actual_agent_price),0) FROM ms_testitem_agent_main  WHERE  DATEPART(mm, agent_open_case_time)   = 2 AND agent_supplier_code = @supplierCode AND  agent_user_code =	@outsourcePersonCode AND DATEPART(yy, agent_open_case_time) = @years)
				
				SET 	@m3 = (SELECT ISNULL(SUM(rmb_actual_agent_price),0) FROM ms_testitem_agent_main  WHERE  DATEPART(mm, agent_open_case_time)   = 3 AND agent_supplier_code = @supplierCode AND  agent_user_code =	@outsourcePersonCode AND DATEPART(yy, agent_open_case_time) = @years)
				
				SET 	@m4 = (SELECT ISNULL(SUM(rmb_actual_agent_price),0) FROM ms_testitem_agent_main  WHERE  DATEPART(mm, agent_open_case_time)   = 4 AND agent_supplier_code = @supplierCode AND  agent_user_code =	@outsourcePersonCode AND DATEPART(yy, agent_open_case_time) = @years)
				
				SET 	@m5 = (SELECT ISNULL(SUM(rmb_actual_agent_price),0) FROM ms_testitem_agent_main  WHERE  DATEPART(mm, agent_open_case_time)   = 5 AND agent_supplier_code = @supplierCode AND  agent_user_code =	@outsourcePersonCode AND DATEPART(yy, agent_open_case_time) = @years)
				
				SET 	@m6 = (SELECT ISNULL(SUM(rmb_actual_agent_price),0) FROM ms_testitem_agent_main  WHERE  DATEPART(mm, agent_open_case_time)   = 6 AND agent_supplier_code = @supplierCode AND  agent_user_code =	@outsourcePersonCode AND DATEPART(yy, agent_open_case_time) = @years)
				
				SET 	@m7 = (SELECT ISNULL(SUM(rmb_actual_agent_price),0) FROM ms_testitem_agent_main  WHERE  DATEPART(mm, agent_open_case_time)   = 7 AND agent_supplier_code = @supplierCode AND  agent_user_code =	@outsourcePersonCode AND DATEPART(yy, agent_open_case_time) = @years)
				
				SET 	@m8 = (SELECT ISNULL(SUM(rmb_actual_agent_price),0) FROM ms_testitem_agent_main  WHERE  DATEPART(mm, agent_open_case_time)   = 8 AND agent_supplier_code = @supplierCode AND  agent_user_code = @outsourcePersonCode AND DATEPART(yy, agent_open_case_time) = @years)
				
				SET 	@m9 = (SELECT ISNULL(SUM(rmb_actual_agent_price),0) FROM ms_testitem_agent_main  WHERE  DATEPART(mm, agent_open_case_time)   = 9 AND agent_supplier_code = @supplierCode AND  agent_user_code = @outsourcePersonCode AND DATEPART(yy, agent_open_case_time) = @years)
				
				SET 	@m10 = (SELECT ISNULL(SUM(rmb_actual_agent_price),0) FROM ms_testitem_agent_main  WHERE  DATEPART(mm, agent_open_case_time)   = 10 AND agent_supplier_code = @supplierCode AND  agent_user_code = @outsourcePersonCode AND DATEPART(yy, agent_open_case_time) = @years)
				
				SET 	@m11 = (SELECT ISNULL(SUM(rmb_actual_agent_price),0) FROM ms_testitem_agent_main  WHERE  DATEPART(mm, agent_open_case_time)   = 11 AND agent_supplier_code = @supplierCode AND  agent_user_code = @outsourcePersonCode AND DATEPART(yy, agent_open_case_time) = @years)
				
				SET 	@m12 = (SELECT ISNULL(SUM(rmb_actual_agent_price),0) FROM ms_testitem_agent_main  WHERE  DATEPART(mm, agent_open_case_time)   = 12 AND agent_supplier_code = @supplierCode AND  agent_user_code =	@outsourcePersonCode AND DATEPART(yy, agent_open_case_time) = @years )
					
		    SET  @totalPrice = @m1+@m2+@m3+@m4+@m5+@m6+@m7+@m8+@m9+@m10+@m11+@m12
					
				INSERT INTO ms_outsource_supplier_ranking(years,supplier_code,supplier_name,outsource_person_code,outsource_person_name,outsource_item_quantity,total_price,m1,m2,m3,m4,m5,m6,m7,m8,m9,m10,m11,m12) VALUES(@years,@supplierCode,@supplierName,@outsourcePersonCode,@outsourcePersonName,@outsourceItemQuantity,@totalPrice,@m1,@m2,@m3,@m4,@m5,@m6,@m7,@m8,@m9,@m10,@m11,@m12)
					
		END;
					
	FETCH NEXT 
	FROM
		supplier_ranking_cursor INTO @supplierCode,@supplierName,@outsourcePersonCode,@outsourcePersonName,@years,@outsourceItemQuantity;
					
	END ;
	
--关闭游标
 close supplier_ranking_cursor; 
 
 deallocate supplier_ranking_cursor;
 
 -- 外包人员部门代码、部门名称
UPDATE  mosr
SET mosr.person_department_code = soe.fd_parentid
FROM ms_outsource_supplier_ranking mosr 
JOIN sys_org_element soe ON mosr.outsource_person_code  = soe.fd_id 

UPDATE  mosr
SET mosr.person_department_name = soe.fd_name
FROM ms_outsource_supplier_ranking mosr 
JOIN sys_org_element soe ON mosr.person_department_code  = soe.fd_id 
		
END;
连接更新
UPDATE mtior 
SET mtior.testitem_id = mltm.testitem_id 
FROM
	ms_lab_testitem_main mltm
	JOIN ms_testItem_outlay_record mtior ON mltm.detail_id  = mtior.detail_id 
WHERE
	CHARINDEX( '.', mltm.lab_testitem_serialno ) = 0

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/999500.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JAVA 从入门到起飞 day8 面向对象01

1.面向对象的介绍 老师的讲解: 面向:就相当于拿找 对象:能干活的东西 面向对象编程:拿东西过来做对应的事 我的理解: 让我们通过一个比喻来了解 JAVA 中的面向对象思想。 想象一下你正在建一座房子: 1. **类&#…

【开放视觉】AI人像特效之「更快、更高、更强的互娱换脸解决方案」

写真开源AIGC推荐插播: 最新 FaceChain支持多人合照写真功能,项目信息汇总:ModelScope 魔搭社区 github开源直达(觉得有趣的点个star哈。):https://github.com/modelscope/facechain 正文&#xff1…

如何实现数据流畅转换?火山引擎ByteHouse推出ELT能力

更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群 在数据分析场中,企业使用的数据通常具备来源多样化的特点,如支付交易记录、用户行为等,且数据格式各异,有的为行式存…

海南大学金秋悦读《乡村振兴战略下传统村落文化旅游设计》2023新学年许少辉八一新书​

海南大学金秋悦读《乡村振兴战略下传统村落文化旅游设计》2023新学年许少辉八一新书​

分享一下鲜花店做微信小程序开发的重要性

随着移动互联网的普及,微信小程序作为一种新型的应用形态,正在改变着人们的生活方式和消费习惯。对于鲜花店来说,开发微信小程序尤为重要,因为它能为商家带来诸多优势和便利。本文将详细探讨鲜花店做微信小程序开发的重要性。 首先…

Mysql->Hudi->Hive

一 准备 1.启动集群 /hive/mysql start-all.sh2.启动spark-shell spark-shell \--master yarn \ //--packages org.apache.hudi:hudi-spark3.1-bundle_2.12:0.12.2 \--jars /opt/software/hudi-spark3.1-bundle_2.12-0.12.0.jar \--conf spark.serializerorg.apache.spark.…

二维码智慧门牌管理系统:强化地址管理,推动政府业务协同

文章目录 前言一、二维码智慧门牌管理系统的特点二、优势与效果 前言 随着科技的迅猛发展,我们的生活正在经历着前所未有的变革。在这个过程中,地址门牌的管理显得尤为重要。为了更好地管理地址资源,政府各部门需要实现标准地址资源共享交换…

uniapp 小程序 父组件调用子组件方法

答案:配合小程序API > this.selectComponent(""),来选择组件,再使用$vm选择组件实例,再调用方法,或者data 1 设置组件的id,如果你的多端,请跟据情况设置ref,class,id,以便通过小…

Python 变量的定义和数据类型的转换

变量 变量的定义 基本语法:变量名 值 变量名是给对象贴一个用于访问的标签,给对象绑定名字的过程也称为赋值,赋值符号 “” 变量名自定义,要满足标识符命名规则。 Python中,不需要事先声明变量名及其类型&#xff…

100个Python常见问题.pdf

大家好,我是涛哥。 最近,收到大家的反馈,能不能整理一些在python的开发中比较常见的问题,所以这段时间为大家梳理了100个Python常见问题,看看这里面有没有你需要的? 包括Python爬虫,PythonGUI编…

海外媒体发稿:Kol出文营销推广10方法解析

根据遵照下列10个秘笈,你将能够变成行业的领先者,增加自己的知名度并获得更多的可能性。展现个人ip,给予优质的内容,提升技术专业互联网,利用社交媒体和数据统计分析,和粉丝取得联系,参加行业主…

Java开发之框架(spring、springmvc、springboot、mybatis)【面试篇 完结版】

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、框架知识分布二、Spring1. spring-单例bean① 问题引入② 单例bean是线程安全的吗③ 问题总结④ 实战面试 2. spring-AOP① 问题引入② AOP记录操作日志③ …

9.11黄金今日会爆涨吗?黄金原油最新投资行情走势咨询

黄金走势分析及策略      黄金上周五冲高回落,日线以长上影线阴线收尾,说明上方10日线1930附近阻力较强,这也是上周五的高点,也有可能是未来决定黄金能否打开新回升趋势的关键,下方目前受到中轨线1915一线支撑&…

无涯教程-JavaScript - FVSCHEDULE函数

描述 FVSCHEDULE函数在应用一系列复合利率后返回初始本金的未来值。使用FVSCHEDULE以可变或可调汇率计算投资的未来价值。 语法 FVSCHEDULE (principal, schedule)争论 Argument描述Required/OptionalPrincipalThe present value.RequiredScheduleAn array of interest rat…

三维模型3DTile格式轻量化压缩处理工具常用几款软件介绍

三维模型3DTile格式轻量化压缩处理工具常用几款软件介绍 三维模型3DTile格式的轻量化处理旨在减少模型的存储空间和提高渲染性能。以下是一些推荐的工具软件,可以用于实现这个目的: MeshLab:MeshLab是一个开源的三维模型处理软件&#xff0c…

51单片机智能小车(循迹、跟随、避障、测速、蓝牙、wifie、4g、语音识别)总结

目录 1.电机模块开发 1.1 让小车动起来 1.2 串口控制小车方向 1.3 如何进行小车PWM调速 1.4 PWM方式实现小车转向 2.循迹小车 2.1 循迹模块使用 2.2 循迹小车原理 2.3 循迹小车核心代码 3.跟随/避障小车 3.1 红外壁障模块分析​编辑 3.2 跟随小车的原理 3.3 跟随小…

职场新人向老板汇报工作时,需要注意什哪些事项?

引言: 职场新人在向老板汇报工作时,需要特别注意一些事项,以确保有效传达工作进展和获得老板的认可。本文将重点介绍职场新人在向老板汇报工作时需要留意的事项和技巧。 一、准备充分: 在向老板汇报工作之前,职场新人应…

使用Enterprise Architect(EA)的插件AtScope,解析代码中函数和变量调用关系

Enterprise Architect简称EA,是用来设计程序流程图和结构图的软件 AtScope是EA的插件,可以用来分析代码结构,查看工程中的文件之间的变量和函数调用关系 安装EA和AtScope都需要lisence,自行解决 这里以EA10版本为例 EA和AtScop…

【SpringBoot应用篇】SpringBoot集成Caffeine本地缓存

【SpringBoot应用篇】SpringBoot集成Caffeine本地缓存 本地缓存介绍本地缓存方案选型CaffeineSpringBoot 集成 Caffeine 两种方式SpringBoot 集成 Caffeine 方式一pomapplication.yml缓存配置类User实体UserMapperUserServiceUserController SpringBoot 集成 Caffeine 方式二po…

开源抖音小程序系统源码分享+完整版安装教程

给大家分享一个抖音小程序系统源码,系统是开源运营版,源码包含完整搭建部署教程,内含多套模板、模块化自由DIY功能,支持除抖音小程序制作外,还支持一键同步微信、支付宝、百度、今日头条端小程序等等,功能是…