`

oracle_package\packeage body

阅读更多

 

---Package

CREATE OR REPLACE PACKAGE TEST_PACKAGE is
	
	-- Author  :  
	-- Created :  
	-- Purpose :  
	/*==================================================================================
	* 功能描述: 写数据库日志
	*=================================================================================*/
	PROCEDURE INSERTlOG(log_person     in VARCHAR2,
				log_class      in VARCHAR2,
				log_method     in VARCHAR2,
				log_info       in VARCHAR2,
				log_error_code in VARCHAR2);
				
END TEST_PACKAGE;
/

GRANT EXECUTE ON TEST.TEST_PACKAGE TO R_TEST_EXEC;

 

 ------Package Body

---Package body的模板
CREATE OR REPLACE PACKAGE BODY TEST_PACKAGE IS
	
	TYPE T_TEST_SEND_INFO IS RECORD(
		ID_TEST_SEND_INFO  INF_WECHAT_SEND_INFO.ID_WECHAT_SEND_INFO%TYPE,
		ROW_ID             ROWID
	);
	
	TYPE TBL_TEST_SEND_INFO IS TABLE OF T_TEST_SEND_INFO INDEX BY BINARY_INTEGER;
	
	----以行插入
	PROCEDURE SAVE_TEST_SEND_INFO(V_TEST_SEND_INFO TBL_TEST_SEND_INFO,
                                    O_MSG OUT VARCHAR2) IS
	    BULK_ERRORS EXCEPTION;
	    PRAGMA EXCEPTION_INIT(BULK_ERRORS, -24381);
    BEGIN
    	FORALL INDX IN INDICES OF V_TEST_SEND_INFO SAVE EXCEPTIONS
      		INSERT INTO INF_TEST_SEND_INFO
					       (ID_TEST_SEND_INFO,
					       ROWID)
					      VALUES
					       (V_TEST_SEND_INFO(INDX).ID_TEST_SEND_INFO,
					        V_TEST_SEND_INFO(INDX).ROW_ID);
					        
     	FORALL INDX IN INDICES OF V_TEST_SEND_INFO SAVE EXCEPTIONS
        	DELETE FROM INF_TEST_SEND_INFO WHERE ROWID=V_TEST_SEND_INFO(INDX).ROW_ID;
    EXCEPTION
    	WHEN BULK_ERRORS THEN
            IF O_MSG IS NULL THEN
                O_MSG := '插入到微信发送状态流水表异常' || SQLCODE || SUBSTR(SQLERRM, 1, 200);
            END IF;
	END SAVE_TEST_SEND_INFO;
	
	/************************************
	---批量将U数据添加到表中
	************************************/
	PROCEDURE SAVE_TO_TEST_SEND_INFO(O_MSG OUT VARCHAR2) IS
	    -- 游标行类型
	    VTBL_TEST_SEND_INFO TBL_TEST_SEND_INFO;
	    -- 游标
	    CURSOR CS_TEST_SEND_INFO IS
	    SELECT SYS_GUID() ID_TEST_SEND_INFO,
               ROWID ROW_ID
      	  FROM TEST_SEND_INFO I
         WHERE I.ID_TEST_SEND_INFO IS NOT NULL;

	BEGIN
		-- 打开游标
	    OPEN CS_TEST_SEND_INFO;
	    <<LP_CL_MAIN>>
	    LOOP
	         FETCH CS_TEST_SEND_INFO BULK COLLECT INTO VTBL_TEST_SEND_INFO LIMIT 1000;
	         -- 每1000行保存一次
	         SAVE_TEST_SEND_INFO(VTBL_TEST_SEND_INFO,O_MSG);
	         COMMIT;
	         -- 每1000行提交一次
	         EXIT LP_CL_MAIN WHEN CS_TEST_SEND_INFO%NOTFOUND;
	    END LOOP LP_CL_MAIN;
        -- 关闭游标
        CLOSE CS_TEST_SEND_INFO;
	END SAVE_TO_TEST_SEND_INFO;
	
	----插入日志
	PROCEDURE INSERTlOG(log_person     in VARCHAR2,
                      log_class      in VARCHAR2,
                      log_method     in VARCHAR2,
                      log_info       in VARCHAR2,
                      log_error_code in VARCHAR2) is
	  logPerson varchar2(100);
	begin
		IF (log_person IS NULL) THEN
			logPerson := 'SYSTEM';
		ELSE
			logPerson := log_person;
	END IF;
  
	insert into TEST.TEST_COMM_LOG
      (ID_COMM_LOG,
       LOG_PERSON,
       LOG_CLASS,
       LOG_METHOD,
       LOG_INFO,
       LOG_ERROR_CODE,
       LOG_TIME)
    values
      (SYS_GUID(),
       logPerson,
       log_class,
       log_method,
       log_info,
       log_error_code,
       sysdate);
    commit;
  end;
  
  
  
  


END TEST_PACKAGE;
/

 ----triger

--创建数据时CREATED_BY,CREATED_DATE,UPDATED_BY,UPDATED_DATE自动赋值 
CREATE OR REPLACE TRIGGER BUSSINESS_BI
   BEFORE INSERT ON TEST_BUSSINESS
   FOR EACH ROW
DECLARE
   V_TRIGGER_USER_CREATED VARCHAR2(100);
   V_TRIGGER_USER_UPDATED VARCHAR2(100);
   V_TRIGGER_DATE         DATE;
   
   V_STATUS TEST.TR_SWITCH.STATUS%TYPE;
   CURSOR C_SWITCH(CP_SWITCH TEST.TR_SWITCH.SWITCH_FOR%TYPE) IS
      SELECT STATUS 
        FROM PADINFODATA.TR_SWITCH
       WHERE TRIGGER_NAME = 'INF_BUSSINESS_BI'
         AND SWITCH_FOR   = CP_SWITCH;  

   V_SQLCODE       VARCHAR2(6);
   V_SQLERRM       VARCHAR2(200);
   V_ERROR_COMMENT VARCHAR2(300);
BEGIN
   V_ERROR_COMMENT := 'BEFORE GET_USER';

   --SET CREATED_BY
   IF :NEW.CREATED_BY IS NULL THEN
      V_TRIGGER_USER_CREATED := USER;
   ELSE
      V_TRIGGER_USER_CREATED := :NEW.CREATED_BY;
   END IF;

   --SET UPDATED_BY
   IF :NEW.UPDATED_BY IS NULL THEN
       V_TRIGGER_USER_UPDATED := V_TRIGGER_USER_CREATED;
   ELSE
       V_TRIGGER_USER_UPDATED := :NEW.UPDATED_BY;
   END IF;

   V_TRIGGER_DATE := SYSDATE;

   --需求来源:表中记录的审计字段信息的更新
   --功能描述:用于保证审计信息的完整性 和一致性
   V_ERROR_COMMENT:='BEFORE NETS_INSERT_AUDIT';
   OPEN C_SWITCH('NETS_INSERT_AUDIT');       --获取子功能控制信息
   FETCH C_SWITCH INTO V_STATUS;
   IF C_SWITCH%FOUND AND V_STATUS = '1' THEN
      :NEW.CREATED_DATE := V_TRIGGER_DATE;
      :NEW.UPDATED_DATE := V_TRIGGER_DATE;
      :NEW.CREATED_BY   := V_TRIGGER_USER_CREATED;
      :NEW.UPDATED_BY   := V_TRIGGER_USER_UPDATED;
   END IF;
   CLOSE C_SWITCH;

   --出错处理。触发器执行有误,将出错信息插入到tr_error_log表
   EXCEPTION
      WHEN OTHERS THEN
      V_SQLCODE := SQLCODE;
      V_SQLERRM := SUBSTR(SQLERRM,1,200);
      INSERT INTO TEST.TR_ERROR_LOG
                 (ERROR_NO          ,         --系统错误代码
                  ERROR_MESSAGE     ,         --系统错误信息
                  TRIGGER_NAME      ,         --出错的trigger
                  TRIGGER_USER      ,         --出错的用户
                  TRIGGER_DATE      ,         --出错的时间
                  ERROR_COMMENT               --出错详细信息
                  )
                  VALUES
                 (V_SQLCODE,
                  V_SQLERRM,
                  'INF_BUSSINESS_BI',
                  V_TRIGGER_USER_CREATED,
                  V_TRIGGER_DATE,
                  V_ERROR_COMMENT
                  );
END;
/ 

 

 

 

 ------

 

 ------

 ------

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    oracle-jar-packege.rar_oracle

    总之,"oracle-jar-packeage.rar_oracle"提供的Oracle连接包是Java应用程序与Oracle数据库通信的关键,它简化了数据库连接的步骤,使开发者能够方便地利用Java实现对Oracle数据库的操作。在使用过程中,应注意选择...

    Python packeage

    【Python package】是一个个人使用的Python库集合,包含了多个在Python编程中常用的库,适用于Windows操作系统。这个集合展示了Python在处理不同任务时的强大扩展性。让我们逐一解析这些库的功能和应用场景。 1. **...

    eslint-config:CLEO.one的ESLint配置

    packeage.json { " devDependencies " : { " babel-eslint " : " 9.0.0 " , " eslint " : " ^5.16.0 " , " eslint-config-cleo-one " : " ^1.0.0 " , " eslint-config-prettier " : " ^4.1.0 " , " eslint-...

    Python自动化办公源码-34 Python批量新建文件夹并保存日志信息

    Python自动化办公源码-34 Python批量新建文件夹并保存日志信息

    粒子滤波算法在目标跟踪中的实践与源码解析集合:多套系统源码包括基于meanshift的应用、MATLAB实现及与卡尔曼滤波比较,粒子滤波(器)滤波(器)及应用源码集合目标跟踪提取图像特征 以下多套系统

    粒子滤波算法在目标跟踪中的实践与源码解析集合:多套系统源码包括基于meanshift的应用、MATLAB实现及与卡尔曼滤波比较,粒子滤波(器)滤波(器)及应用源码集合目标跟踪提取图像特征 以下多套系统源码 1、基于meanshift和粒子滤波的目标跟踪代码 2、MATLAB编写的粒子滤波器的源代码 3、粒子滤波算法实例 4、粒子滤波mcmc介绍 5、粒子滤波算法 matlab(粒子滤波用于剩余寿命预测的实例代码 MATLAB语言编写 附有详细代码说明) 6、粒子滤波matlab代码(能够运行。 Pf粒子滤波实现的目标跟踪程序,可实现针对非高斯噪声情况下的跟踪) 7、粒子滤波代码(三个粒子滤波的演示程序,一个滤波,一个目标跟踪,一个机器人定位) 8、发个Matlab实现粒子滤波算法的程序 9、粒子滤波的简介和5中matlab程序仿真 10、粒子滤波代码与卡尔曼做比较(这是用于目标跟踪的粒子滤波代码, 用matlab编写的,很有借鉴性,一维情况下, 非高斯非线性,其中将扩展卡尔曼滤波与粒子滤波进行比较,更好的说明了粒子滤波的优越性) 11、EKF,UKF和PF粒子滤波的性能(对比分析EKF

    基于java+ssm+mysql的数学竞赛网站 源码+数据库+论文(高分毕设项目).zip

    项目已获导师指导并通过的高分毕业设计项目,可作为课程设计和期末大作业,下载即用无需修改,项目完整确保可以运行。 包含:项目源码、数据库脚本、软件工具等,该项目可以作为毕设、课程设计使用,前后端代码都在里面。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。 项目都经过严格调试,确保可以运行!可以放心下载 技术组成 语言:java 开发环境:idea 数据库:MySql8.0 部署环境:Tomcat(建议用 7.x 或者 8.x 版本),maven 数据库工具:navicat

    西门子PLC与三菱变频器通讯程序:触摸屏控制变频器实现精准频率调节与实时监控,西门子1200 PLC与3台三菱E700变频器通讯程序 器件:西门子1200 PLC,3台三菱E700变频

    西门子PLC与三菱变频器通讯程序:触摸屏控制变频器实现精准频率调节与实时监控,西门子1200 PLC与3台三菱E700变频器通讯程序 器件:西门子1200 PLC,3台三菱E700变频器,西门子KTP700 Basic Pn触摸屏,昆仑通态触摸屏(带以太网),中途可以加路由器 控制方式:触摸屏与plc以太网通讯,PLC与变频器通讯485口相连 功能:触摸屏控制变频器设定频率,启停,读取输出频率,电压 说明:是程序,非硬件。 程序有注释,西门子触摸屏程序,昆仑通态程序,变频器设置,接线都有,一应俱全 ,核心关键词:西门子1200 PLC; 三菱E700变频器; 通讯程序; 触摸屏控制; 设定频率; 启停; 读取输出频率; 电压; PLC与变频器485口相连; 程序注释; 西门子触摸屏程序; 昆仑通态程序; 变频器设置; 接线。,基于西门子PLC与三菱变频器通讯的控制系统程序

    Python自动化办公源码-35Python从Excel表中批量复制粘贴数据到新表

    Python自动化办公源码-35Python从Excel表中批量复制粘贴数据到新表

    基于Spring Boot + Vue框架的出租车管理系统设计源码

    本项目为基于Spring Boot和Vue框架构建的出租车管理系统源码,总计包含118个文件,涵盖99个Java源文件、15个XML配置文件、1个Git忽略文件、1个JAR包文件以及1个Markdown文件。该系统采用Java语言开发,适用于出租车行业的智能化管理需求。

    基于滑膜与PID控制的分布式电动汽车动态载荷分配与操稳控制优化策略,滑膜+pid+上层设计下层平均分配 优化分配 动态载荷分配,分布式电动汽车操稳控制 本研究在matlab simulink建立七自由

    基于滑膜与PID控制的分布式电动汽车动态载荷分配与操稳控制优化策略,滑膜+pid+上层设计下层平均分配 优化分配 动态载荷分配,分布式电动汽车操稳控制 本研究在matlab simulink建立七自由度轮毂电机驱动汽车模型,使用滑膜联合控制以及pid控制实现转向过程中质心侧偏角,橫摆角速度,滑转率稳定性控制, ,关键词:滑膜控制; PID控制; 七自由度轮毂电机驱动汽车模型; 联合控制; 稳定性控制; 动态载荷分配; 操稳控制; 分布式电动汽车。,"基于滑膜与PID控制的分布式电动汽车操稳控制与动态载荷分配研究"

    单相PWM整流器两种控制策略仿真研究:PR控制器与PI控制器的应用及性能分析,单相PWM整流器两种控制策略实现(交流220V-直流350V整流)仿真,分别采用直接电流控制(PR控制器)与dq控制(PI

    单相PWM整流器两种控制策略仿真研究:PR控制器与PI控制器的应用及性能分析,单相PWM整流器两种控制策略实现(交流220V-直流350V整流)仿真,分别采用直接电流控制(PR控制器)与dq控制(PI控制器)实现,两个仿真动稳态性能良好,附带仿真介绍文档,详细讲述仿真搭建过程,并附带参考文献与原理出处,内容详实,适合电力电子入门仿真参考。 ,核心关键词:单相PWM整流器;控制策略;直接电流控制(PR控制器);虚拟dq控制(PI控制器);仿真动稳态性能;仿真介绍文档;仿真搭建过程;参考文献;原理出处;电力电子入门仿真参考。,《单相PWM整流器仿真:直接电流与虚拟dq控制策略对比解析》

    chromedriver-win64-125版本所有资源打包:125.0.6368.0 -125.0.6422.78之间的所有版本打包下载

    chromedriver-win64-125版本所有资源打包:125.0.6368.0 -125.0.6422.78之间的所有版本打包下载

    基于java+ssm+mysql的二手车交易平台 源码+数据库+论文(高分毕设项目).zip

    项目已获导师指导并通过的高分毕业设计项目,可作为课程设计和期末大作业,下载即用无需修改,项目完整确保可以运行。 包含:项目源码、数据库脚本、软件工具等,该项目可以作为毕设、课程设计使用,前后端代码都在里面。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。 项目都经过严格调试,确保可以运行!可以放心下载 技术组成 语言:java 开发环境:idea 数据库:MySql8.0 部署环境:Tomcat(建议用 7.x 或者 8.x 版本),maven 数据库工具:navicat

    IEEE69节点系统Simulink仿真模型:潮流计算与故障分析及分布式电源影响观察,IEEE69节点系统Simulink仿真 1.基础功能:基于Matlab simulink平台搭建IEEE33节点

    IEEE69节点系统Simulink仿真模型:潮流计算与故障分析及分布式电源影响观察,IEEE69节点系统Simulink仿真 1.基础功能:基于Matlab simulink平台搭建IEEE33节点仿真模型,对电力系统进行潮流计算 2.拓展功能: 可在该IEEE69节系统仿真模型上进行故障分析(短路,断线等),也可以在该模型上接入分布式电源,观察分布式电源接入对系统的影响。 ,IEEE69节点系统Simulink仿真; Matlab Simulink平台; 潮流计算; 故障分析; 分布式电源接入影响; 短路分析; 断线分析。,Matlab Simulink中IEEE 69节点系统仿真:功能扩展与分布式电源接入影响分析

    2025最新人工智能与健康题库及答案.docx

    2025最新人工智能与健康题库及答案.docx

    蛇优化算法SO优化LSSVM的c和g参数在多输入单输出下的拟合预测建模-Matlab程序实现与结果展示,蛇优化算法SO优化支持向量机LSSVM的c和g参数做多输入单输出的拟合预测建模 程序内注释详

    蛇优化算法SO优化LSSVM的c和g参数在多输入单输出下的拟合预测建模——Matlab程序实现与结果展示,蛇优化算法SO优化支持向量机LSSVM的c和g参数做多输入单输出的拟合预测建模。 程序内注释详细直接替数据就可以使用。 程序语言为matlab。 程序直接运行可以出拟合预测图,迭代优化图,线性拟合预测图,多个预测评价指标。 PS:以下效果图为测试数据的效果图,主要目的是为了显示程序运行可以出的结果图,具体预测效果以个人的具体数据为准。 2.由于每个人的数据都是独一无二的,因此无法做到可以任何人的数据直接替就可以得到自己满意的效果。 ,蛇优化算法; SO优化; 支持向量机; LSSVM; c和g参数; 多输入单输出; 拟合预测建模; MATLAB程序; 拟合预测图; 迭代优化图; 线性拟合预测图; 预测评价指标。,基于蛇优化算法与SO优化的LSSVM多输入单输出预测建模及可视化工具

    基于Django+Yolov8+Tensorflow的智能鸟类识别平台

    系统旨在为了帮助鸟类爱好者、学者、动物保护协会等群体更好的了解和保护鸟类动物。用户群体可以通过平台采集野外鸟类的保护动物照片和视频,甄别分类、实况分析鸟类保护动物,与全世界各地的用户,沟通交流。使用方法请参考文章:https://blog.csdn.net/m0_64027967/article/details/145266648

    http和https的区别?(保姆级教程)

    http和https的区别?【http和https有什么区别?实现网站https化-让网站更安全!简介】 内容概要: 本文为初学者提供了一个全面的学习指南,通过通俗易懂的语言,介绍了http和https的区别,以及如何实现网站https化。本文旨在帮助读者理解网站安全性的重要性,并掌握网站https化的实现方法。 适用人群: 本篇文章主要面向初学者,特别是那些对网络安全感兴趣的读者。它为读者提供了一个实用的指南,帮助他们了解网站安全的基本概念和方法。 使用场景及目标: 本篇文章适用于那些想要提高自己网站安全性的读者。它的目标是帮助读者理解https的作用,掌握实现网站https化的方法和步骤,从而保护自己的网站和用户的安全。 其他说明: 文章采用通俗易懂、口语化的语言风格,旨在让读者轻松理解并吸收内容。同时,文章还强调了实际操作的重要性,鼓励读者亲自动手实践,提高自己的网络安全技能。最后,文章鼓励读者保持积极的心态,将网络安全作为一项重要的技能进行学习和实践。

    基于FATFS系统的STM32F407 SD卡升级Bootloader程序:自动检测与升级流程,stm32f407 SD卡升级 bootloader程序 基于sdio fatfs系统的stm32 b

    基于FATFS系统的STM32F407 SD卡升级Bootloader程序:自动检测与升级流程,stm32f407 SD卡升级 bootloader程序 基于sdio fatfs系统的stm32 bootloader程序 功能简介: 本程序使用fatfs系统读取bin文件。 开机后会自动检测sd卡,检测到sd卡后,再读取固定名称的bin文件,之后会对bin文件进行首包校验,判断该升级包的起始地址是否正确,正确的话,就循环读取bin文件并写入到flash中。 完成升级。 详细流程请看流程图 ,stm32f407; SD卡升级; bootloader程序; fatfs系统读取bin文件; 检测SD卡; 首包校验; 循环写入flash。,STM32F407 SD卡升级Bootloader程序:基于SDIO FATFS系统实现自动升级功能

    Python自动化办公源码-16从Excel总表中分割10个部门的年假数据

    Python自动化办公源码-16从Excel总表中分割10个部门的年假数据

Global site tag (gtag.js) - Google Analytics