专业做俄语网站建设,中国建筑网建设通查询证件网,开发一个小程序的流程,医院网站建设的目的根据网上语法自学写的存储过程#xff0c;使用的是DBeaver工具#xff0c;但是调试过程太痛苦#xff0c;也不清楚为什么有时候改了报错或者没生效。
注意点#xff1a;
1.如果怀疑没生效或者不对#xff0c;可以建个临时表每次往里面插不同数据确认代码是否最新。
2.不…根据网上语法自学写的存储过程使用的是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_TYPEtempTpye;
BEGIN--SELECT MAX(id) INTO tempid FROM FLEX_SUBSIDY_SET_B;--清理历史数据DELETE FROM FLEX_SUBSIDY_SET_B WHERE YEAR toYear AND SUBSIDY_TYPEtoType;--遍历查询数据--FOR tempdata IN tempCur(sourceTpye,sourceYear) loopFOR 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_TYPEsourceTpye) loop--插入数据tempid : tempid1;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_TYPEtempTpye;
BEGINinsert into test_tab values(8,p_test);--清理历史数据DELETE FROM FLEX_SUBSIDY_SET_B_test WHERE YEAR toYear AND SUBSIDY_TYPEtoType;SELECT MAX(id) INTO tempid FROM FLEX_SUBSIDY_SET_B_test;--遍历查询数据--FOR tempdata IN tempCur(sourceTpye,sourceYear) loopFOR tempdata IN (SELECT * FROM FLEX_SUBSIDY_SET_B_test WHERE YEAR sourceYear AND SUBSIDY_TYPEsourceTpye) loop--插入数据tempid : tempid1;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