达梦数据库存储过程

根据网上语法自学写的存储过程,使用的是DBeaver工具,但是调试过程太痛苦,也不清楚为什么有时候改了报错或者没生效。

注意点:

1.如果怀疑没生效或者不对,可以建个临时表每次往里面插不同数据确认代码是否最新。

2.不知道怎么调试或者输出信息也可以往临时表写入。

3.达梦如果是非自增长的,写法简单些。如果是自增长的,使用for循环隐形变量需要select所有需要的字段才能匹配上。

4.自增长的写入也把字段列全了,没有调查是否可以不写。

5.报错的内容应该是对的,但是行号不对。特别编译对象有问题,基本上不是语法问题,而是执行起来会有问题。

这个是有自增长的:

CREATE OR REPLACE PROCEDURE copyFLEX_SUBSIDY_SET_B(sourceTpye IN varchar2 ,sourceYear IN varchar2 , toType IN varchar2 ,toYear IN varchar2) AS
tempid number DEFAULT 0;
 --遍历游标
--CURSOR tempCur(tempTpye IN varchar2,tempYear IN varchar2) IS SELECT * FROM "FLEX_SUBSIDY_SET_B" WHERE "YEAR" =tempYear AND "SUBSIDY_TYPE"=tempTpye;
BEGIN
	--SELECT MAX(id) INTO tempid FROM  FLEX_SUBSIDY_SET_B;
	--清理历史数据
	DELETE FROM FLEX_SUBSIDY_SET_B WHERE "YEAR" =toYear AND "SUBSIDY_TYPE"=toType;

	--遍历查询数据
	--FOR tempdata IN tempCur(sourceTpye,sourceYear) loop
	FOR tempdata IN (SELECT id,"YEAR",SUBSIDY_TYPE,SET_ADMDVS,SUB_ADD_TYPE,QUOTA_BASIC_AMT,SUB_BASIC_AMT,SUB_BASIC_AMT_OV12,ARMY_SVC_PROP,ARMY_SVC_PROP_OV12,DED_BASIC_YEAR,DED_BASIC_YEAR_OV12,OT_RET_AMT,COMME_ADD_TYPE,COMME_ADD_L1,COMME_ADD_L2,COMME_ADD_L3,PAY_PROP,EXPRESS,BEGIN_TIME,END_TIME,VALID_FLAG,CREATE_TIME,UPDATE_TIME,DED_DESC,PAY_BASIC_DESC FROM FLEX_SUBSIDY_SET_B WHERE "YEAR" =sourceYear AND SUBSIDY_TYPE=sourceTpye) loop
		--插入数据
		tempid := tempid+1;
		
		INSERT INTO FLEX_SUBSIDY_SET_B("YEAR",SUBSIDY_TYPE,SET_ADMDVS,SUB_ADD_TYPE,QUOTA_BASIC_AMT,SUB_BASIC_AMT,SUB_BASIC_AMT_OV12,ARMY_SVC_PROP,ARMY_SVC_PROP_OV12,DED_BASIC_YEAR,DED_BASIC_YEAR_OV12,OT_RET_AMT,COMME_ADD_TYPE,COMME_ADD_L1,COMME_ADD_L2,COMME_ADD_L3,PAY_PROP,EXPRESS,BEGIN_TIME,END_TIME,VALID_FLAG,CREATE_TIME,UPDATE_TIME,DED_DESC,PAY_BASIC_DESC) values(toYear,toType,tempdata.SET_ADMDVS,tempdata.SUB_ADD_TYPE,tempdata.QUOTA_BASIC_AMT,tempdata.SUB_BASIC_AMT,tempdata.SUB_BASIC_AMT_OV12,
		tempdata.ARMY_SVC_PROP,tempdata.ARMY_SVC_PROP_OV12,tempdata.DED_BASIC_YEAR,tempdata.DED_BASIC_YEAR_OV12,
		tempdata.OT_RET_AMT,tempdata.COMME_ADD_TYPE,tempdata.COMME_ADD_L1,tempdata.COMME_ADD_L2,tempdata.COMME_ADD_L3,
		tempdata.PAY_PROP,tempdata.EXPRESS,toYear||'0101',toYear||'1231',tempdata.VALID_FLAG,
		tempdata.CREATE_TIME,tempdata.UPDATE_TIME,tempdata.DED_DESC,tempdata.PAY_BASIC_DESC);
		end loop;
END;

这个是没有自增长的:


CREATE OR REPLACE PROCEDURE copyFLEX_SUBSIDY_SET_TEST(sourceTpye IN varchar2 ,sourceYear IN varchar2 , toType IN varchar2 ,toYear IN varchar2) AS
tempid number DEFAULT 0;
 --遍历游标
--CURSOR tempCur(tempTpye IN varchar2,tempYear IN varchar2) IS SELECT * FROM "FLEX_SUBSIDY_SET_B_test" WHERE "YEAR" =tempYear AND "SUBSIDY_TYPE"=tempTpye;
BEGIN
	insert into test_tab values(8,'p_test');
	--清理历史数据
	DELETE FROM FLEX_SUBSIDY_SET_B_test WHERE "YEAR" =toYear AND "SUBSIDY_TYPE"=toType;
	SELECT MAX(id) INTO tempid FROM  FLEX_SUBSIDY_SET_B_test;
	--遍历查询数据
	--FOR tempdata IN tempCur(sourceTpye,sourceYear) loop
	FOR tempdata IN (SELECT * FROM FLEX_SUBSIDY_SET_B_test WHERE "YEAR" =sourceYear AND SUBSIDY_TYPE=sourceTpye) loop
		--插入数据
		tempid := tempid+1;
		
		INSERT INTO FLEX_SUBSIDY_SET_B_test values(tempid,toYear,toType,tempdata.SET_ADMDVS,tempdata.SUB_ADD_TYPE,tempdata.QUOTA_BASIC_AMT,tempdata.SUB_BASIC_AMT,tempdata.SUB_BASIC_AMT_OV12,
		tempdata.ARMY_SVC_PROP,tempdata.ARMY_SVC_PROP_OV12,tempdata.DED_BASIC_YEAR,tempdata.DED_BASIC_YEAR_OV12,
		tempdata.OT_RET_AMT,tempdata.COMME_ADD_TYPE,tempdata.COMME_ADD_L1,tempdata.COMME_ADD_L2,tempdata.COMME_ADD_L3,
		tempdata.PAY_PROP,tempdata.EXPRESS,toYear||'0101',toYear||'1231',tempdata.VALID_FLAG,
		tempdata.CREATE_TIME,tempdata.UPDATE_TIME,tempdata.DED_DESC,tempdata.PAY_BASIC_DESC);
		end loop;
END;

--EXEC VTPMS."copyFLEX_SUBSIDY_SET"('3','2023','2','2024');
--第一二参数是复制源和年度,第三次参数是复制目标和年度,一三参数:2是灵活就业!!!,3自主就业!!!,二四参数:年度如2024

相关推荐

  1. 数据库存储过程

    2024-02-01 14:38:04       28 阅读
  2. 数据库文档

    2024-02-01 14:38:04       39 阅读
  3. 数据库

    2024-02-01 14:38:04       10 阅读
  4. 数据库适配Springboot+MybatisPlus+数据库

    2024-02-01 14:38:04       32 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-02-01 14:38:04       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-02-01 14:38:04       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-02-01 14:38:04       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-02-01 14:38:04       18 阅读

热门阅读

  1. vue3:中warch监听的几种写法

    2024-02-01 14:38:04       35 阅读
  2. ModuleNotFoundError: No module named ‘flask._compat‘

    2024-02-01 14:38:04       28 阅读
  3. rsync将远程文件同步到本地

    2024-02-01 14:38:04       32 阅读
  4. Docker加固策略,防止攻击

    2024-02-01 14:38:04       28 阅读
  5. Unity3D 如何获取动态生成的物体的数据详解

    2024-02-01 14:38:04       38 阅读
  6. 提升小波变换的程序演示

    2024-02-01 14:38:04       25 阅读
  7. 【SparkML系列2】DataSource读取图片数据

    2024-02-01 14:38:04       28 阅读
  8. 网络安全笔记

    2024-02-01 14:38:04       31 阅读
  9. 软件工程知识梳理2-需求分析

    2024-02-01 14:38:04       34 阅读