`

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;
/ 

 

 

 

 ------

 

 ------

 ------

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    openssh-8.6p1rpm包

    openssh-8.6p1_rpm_packeage.zip

    Python packeage

    个人所用Python package

    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源码期末大作业基于opencv+TensorFlow的人脸识别+数据集+详细代码解释(期末大作业项目).rar

    本项目基于OpenCV和TensorFlow实现了一个功能完善的人脸识别系统,并附赠了详细的数据集与代码注释。对于计算机专业的学生、教师或企业员工而言,这无疑是一份极具价值的参考资料,尤其适合那些在人工智能、通信工程、自动化及软件工程领域寻求提升的学习者。 项目涵盖了从图像预处理到模型训练、评估及实际应用的全过程。利用OpenCV的强大图像处理能力,对人脸进行精准定位与特征提取;再结合TensorFlow的深度学习框架,构建并训练出高效的人脸识别模型。此外,项目还精心准备了详尽的数据集,确保模型的训练效果。 代码部分,每一行都有详尽的注释,旨在帮助读者快速理解并掌握核心算法。无论是人脸识别的初学者,还是希望在此基础上进一步研究的开发者,都能从中获得宝贵的启示。 经过严格的测试,本项目的各项功能均运行正常,表现出色。请放心下载使用,相信它将成为您课程设计或毕业设计的得力助手,助您在学术与职业道路上取得更高的成就。

    C语言超市管理系统.zip

    C语言超市管理系统.zip

    apktool版本2.9.0

    apktool版本2.9.0

    1716134031000637_forchheimer_flow.zh_CN.mph

    1716134031000637_forchheimer_flow.zh_CN.mph

    免开3d场景直接清除3d病毒的插件-3d巡警V1.01

    可以直接不打开3d场景就能查杀3d文件的病毒3dsmax杀毒插件。 提供全盘+指定位置查杀的扫描方式,识别各种3d病毒,例如ALC、CRP、ADSL、西山居、MFX以及各种嵌入 广告,通过最新的3dsmax极速检测技术,能高效清除3d场景中的病毒。无论是专业设计师还是普通用户, 都不用担心3d文件再被破坏。

    13.py

    13.py

    python数据分析实例 python数据分析实例(源码)

    python数据分析实例 python数据分析实例(源码) # python数据分析 #### 介绍 python数据可视化例子 ##### 1.SARIMAX模型对公路车流量预测 ##### 2.古诗词云统计 ##### 3.对大数据岗位可视化分析

    Matlab mtd的8通道算法。附带高斯白噪声、多普勒频移的动目标回波.zip

    Matlab mtd的8通道算法。附带高斯白噪声、多普勒频移的动目标回波.zip

    网页爱心特效 HTML5+jQuery制作温馨浪漫爱心表白动画特效.zip

    网页爱心特效 HTML5+jQuery制作温馨浪漫爱心表白动画特效.zip

    要安装NumPy,你可以使用Python的包管理器pip

    numpy 要安装NumPy,你可以使用Python的包管理器pip

    php在线加密网站源码.zip

    压缩包里有多少个php就会被加密多少个PHP、php无需安装任何插件。 如果上传的压缩包里有子文件夹(子文件夹里的php文件也会被加密),加密后的压缩包需要先修复一下,步骤:打开压缩包 =》 工具 =》 修复压缩文件

    Vue+element ui +mongodb+express的网上书城系统

    后台管理系统是基于element ui框架开发的,实现了一个web网上书城系统 实现了后端商品管理界面设计功能。element ui 的优点在于可以方便的开发出功能丰富而且美观的后台管理界面,不需要写很多的CSS代码就可以实现布局,因为框架的开发就在于对代码的封装,而使用框架开发就只需要调用就好。

    Using Docker

    Using Docker

    传统的基于用户的协同过滤推荐算法实现.zip

    协同过滤算法(Collaborative Filtering)是一种经典的推荐算法,其基本原理是“协同大家的反馈、评价和意见,一起对海量的信息进行过滤,从中筛选出用户可能感兴趣的信息”。它主要依赖于用户和物品之间的行为关系进行推荐。 协同过滤算法主要分为两类: 基于物品的协同过滤算法:给用户推荐与他之前喜欢的物品相似的物品。 基于用户的协同过滤算法:给用户推荐与他兴趣相似的用户喜欢的物品。 协同过滤算法的优点包括: 无需事先对商品或用户进行分类或标注,适用于各种类型的数据。 算法简单易懂,容易实现和部署。 推荐结果准确性较高,能够为用户提供个性化的推荐服务。 然而,协同过滤算法也存在一些缺点: 对数据量和数据质量要求较高,需要大量的历史数据和较高的数据质量。 容易受到“冷启动”问题的影响,即对新用户或新商品的推荐效果较差。 存在“同质化”问题,即推荐结果容易出现重复或相似的情况。 协同过滤算法在多个场景中有广泛的应用,如电商推荐系统、社交网络推荐和视频推荐系统等。在这些场景中,协同过滤算法可以根据用户的历史行为数据,推荐与用户兴趣相似的商品、用户或内容,从而提高用户的购买转化率、活跃度和社交体验。 未来,协同过滤算法的发展方向可能是结合其他推荐算法形成混合推荐系统,以充分发挥各算法的优势。

    毕业设计[主机域名]PHP+AJAX的whois查询程序_whois.zip

    毕业设计[主机域名]PHP+AJAX的whois查询程序_whois.zip

    基于Python实现了基于物品的协同过滤推荐算法和基于用户的协同过滤推荐算法.zip

    协同过滤算法(Collaborative Filtering)是一种经典的推荐算法,其基本原理是“协同大家的反馈、评价和意见,一起对海量的信息进行过滤,从中筛选出用户可能感兴趣的信息”。它主要依赖于用户和物品之间的行为关系进行推荐。 协同过滤算法主要分为两类: 基于物品的协同过滤算法:给用户推荐与他之前喜欢的物品相似的物品。 基于用户的协同过滤算法:给用户推荐与他兴趣相似的用户喜欢的物品。 协同过滤算法的优点包括: 无需事先对商品或用户进行分类或标注,适用于各种类型的数据。 算法简单易懂,容易实现和部署。 推荐结果准确性较高,能够为用户提供个性化的推荐服务。 然而,协同过滤算法也存在一些缺点: 对数据量和数据质量要求较高,需要大量的历史数据和较高的数据质量。 容易受到“冷启动”问题的影响,即对新用户或新商品的推荐效果较差。 存在“同质化”问题,即推荐结果容易出现重复或相似的情况。 协同过滤算法在多个场景中有广泛的应用,如电商推荐系统、社交网络推荐和视频推荐系统等。在这些场景中,协同过滤算法可以根据用户的历史行为数据,推荐与用户兴趣相似的商品、用户或内容,从而提高用户的购买转化率、活跃度和社交体验。 未来,协同过滤算法的发展方向可能是结合其他推荐算法形成混合推荐系统,以充分发挥各算法的优势。

    Euclidean;Pearson;Tanimoto;基于用户的协同过滤;基于物品的协同过滤;.zip

    协同过滤算法(Collaborative Filtering)是一种经典的推荐算法,其基本原理是“协同大家的反馈、评价和意见,一起对海量的信息进行过滤,从中筛选出用户可能感兴趣的信息”。它主要依赖于用户和物品之间的行为关系进行推荐。 协同过滤算法主要分为两类: 基于物品的协同过滤算法:给用户推荐与他之前喜欢的物品相似的物品。 基于用户的协同过滤算法:给用户推荐与他兴趣相似的用户喜欢的物品。 协同过滤算法的优点包括: 无需事先对商品或用户进行分类或标注,适用于各种类型的数据。 算法简单易懂,容易实现和部署。 推荐结果准确性较高,能够为用户提供个性化的推荐服务。 然而,协同过滤算法也存在一些缺点: 对数据量和数据质量要求较高,需要大量的历史数据和较高的数据质量。 容易受到“冷启动”问题的影响,即对新用户或新商品的推荐效果较差。 存在“同质化”问题,即推荐结果容易出现重复或相似的情况。 协同过滤算法在多个场景中有广泛的应用,如电商推荐系统、社交网络推荐和视频推荐系统等。在这些场景中,协同过滤算法可以根据用户的历史行为数据,推荐与用户兴趣相似的商品、用户或内容,从而提高用户的购买转化率、活跃度和社交体验。 未来,协同过滤算法的发展方向可能是结合其他推荐算法形成混合推荐系统,以充分发挥各算法的优势。

Global site tag (gtag.js) - Google Analytics