찾다
데이터 베이스MySQL 튜토리얼存储过程运行日志记录通用模块
存储过程运行日志记录通用模块Jun 07, 2016 pm 03:59 PM
저장성취하다통나무기준 치수목표기록프로세스달리다만능인

目标 实现记录执行存储过程的开始时间,结束时间,运行状态,错误信息等,以函数封装日志记录的方式,存储调用函数 源码 存储过程模版 CREATE OR REPLACE PROCEDURE proc_xx IS --修改标志返回值 V_AFFECT_LINE NUMBER; PROID NUMBER;BEGIN --调用更改标志函

目标

实现记录执行存储过程的开始时间,结束时间,运行状态,错误信息等,以函数封装日志记录的方式,存储调用函数

源码

存储过程模版
CREATE OR REPLACE PROCEDURE proc_xx

 IS

    --修改标志返回值
    V_AFFECT_LINE    NUMBER;
    PROID            NUMBER;
BEGIN

    --调用更改标志函数,将进程改为运行中'S'
    V_AFFECT_LINE := INSERT_LOG(PROID,'proc_xx',WIFI.GLOBAL_PARAM.STATUS_START);

       --逻辑处理函数调用
    V_AFFECT_LINE := WIFI.func_xx();

    --修改标志,成功置C
    V_AFFECT_LINE := WIFI.MODIFY_STATUS(PROID,WIFI.GLOBAL_PARAM.STATUS_CLOSE,'');


EXCEPTION
       WHEN OTHERS THEN
    --调用更改标志函数,将进程改为出错'F'
    V_AFFECT_LINE := MODIFY_STATUS(PROID,WIFI.GLOBAL_PARAM.STATUS_FAILED,WIFI.GLOBAL_PARAM.LOG_EXCEPTION);
END;
函数模版
create or replace function func_xx return int is
  begin

....        
    
return 1;

exception
  when others then
      set_error_log ();
      RETURN 0;
 end;
相关日志记录函数
CREATE OR REPLACE FUNCTION INSERT_LOG (
   proid          OUT      NUMBER,
   program_name   IN       VARCHAR2,
   status         IN       VARCHAR2
)
   RETURN NUMBER
IS
  -------------------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------------------------
---
-- -功能描述: 初始化日志
----------------------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------------------------------
BEGIN
   INSERT INTO program_log
        VALUES (program_log_seq.NEXTVAL, TO_CHAR (SYSDATE, 'YYYYMMDD'),
         program_name, SYSDATE, NULL, status, '');

   SELECT program_log_seq.CURRVAL INTO proid FROM dual;
   COMMIT;
   RETURN 1;
EXCEPTION
   WHEN OTHERS
   THEN
      RETURN 0;
      END;
      
      
 CREATE OR REPLACE FUNCTION MODIFY_STATUS
  ( proId IN number,
    status IN varchar2,
    proDesc in varchar2)
    RETURN NUMBER IS

   thisDate     date;

BEGIN
  -------------------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------------------------
---
-- -功能描述: 修改日志表存储过程运行状态,记录开始时间 结束时间 出错信息
----------------------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------------------------------
    thisDate := sysdate;
    --更新状态 出错信息
    update program_log set program_status=status, memo=proDesc where id=proId;

    --更新日期:如果是运行中,更新起始运行日期;如果是运行成功或者运行失败,更新结束运行日期
    IF status='S' THEN
        update program_log set start_date=thisDate where id=proId;
    ELSIF status='C' THEN
        update program_log set end_date=thisDate where id=proId;
    ELSIF status='F' THEN
        update program_log set end_date=thisDate where id=proId;
        COMMIT;
        RAISE_APPLICATION_ERROR(-20040,'STATUS IS F');

    END IF;
   /* ELSIF status='C' OR status='F' THEN
        update program_log set end_date=thisDate where id=proId;
    END IF;*/
    commit;
    RETURN 1;
EXCEPTION
    WHEN OTHERS THEN
    RAISE_APPLICATION_ERROR(-20041,'STATUS IS F');
        RETURN 0;
END;

CREATE OR REPLACE PROCEDURE SET_ERROR_LOG
   IS
BEGIN
   GLOBAL_PARAM.LOG_EXCEPTION := 'error desc---'||sqlerrm;
   commit;
   RAISE no_data_found;
END; -- Procedure;


CREATE OR REPLACE PACKAGE GLOBAL_PARAM IS
LOG_EXCEPTION VARCHAR2(2000):='';
STATUS_START VARCHAR2(10):='S';
STATUS_CLOSE VARCHAR2(10):='C';
STATUS_FAILED VARCHAR2(10):='F';

END; 
创建日志表
create table PROGRAM_LOG
(
  ID             NUMBER not null,
  BATCH_NUMBER   VARCHAR2(50),
  PROGRAM_NAME   VARCHAR2(100),
  START_DATE     DATE,
  END_DATE       DATE,
  PROGRAM_STATUS VARCHAR2(20),
  MEMO           VARCHAR2(2000)
)
성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
华为明年将推创新 MED 存储产品:机架容量超过 10 PB,功耗低于 2 kW华为明年将推创新 MED 存储产品:机架容量超过 10 PB,功耗低于 2 kWMar 07, 2024 pm 10:43 PM

本站3月7日消息,华为数据存储产品线总裁周跃峰博士日前出席MWC2024大会,专门展示了为温数据(WarmData)和冷数据(ColdData)设计的新一代OceanStorArctic磁电存储解决方案。华为数据存储产品线总裁周跃峰发布系列创新解决方案图源:华为本站附上华为官方新闻稿内容如下:该方案的成本比磁带低20%,功耗比硬盘低90%。根据国外科技媒体blocksandfiles报道,华为发言人还透露了关于该磁电存储解决方案的信息:华为的磁电磁盘(MED)是对磁存储介质的重大创新。第一代ME

Vue3+TS+Vite开发技巧:如何进行数据加密和存储Vue3+TS+Vite开发技巧:如何进行数据加密和存储Sep 10, 2023 pm 04:51 PM

Vue3+TS+Vite开发技巧:如何进行数据加密和存储随着互联网技术的快速发展,数据的安全性和隐私保护变得越来越重要。在Vue3+TS+Vite开发环境下,如何进行数据加密和存储,是每个开发人员都需要面对的问题。本文将介绍一些常用的数据加密和存储的技巧,帮助开发人员提升应用的安全性和用户体验。一、数据加密前端数据加密前端加密是保护数据安全性的重要一环。常用

如何在 Windows 11 上清理缓存:详细的带图片教程如何在 Windows 11 上清理缓存:详细的带图片教程Apr 24, 2023 pm 09:37 PM

什么是缓存?缓存(发音为ka·shay)是一种专门的高速硬件或软件组件,用于存储经常请求的数据和指令,这些数据和指令又可用于更快地加载网站、应用程序、服务和系统的其他部分。缓存使最常访问的数据随时可用。缓存文件与缓存内存不同。缓存文件是指经常需要的文件,如PNG、图标、徽标、着色器等,多个程序可能需要这些文件。这些文件存储在您的物理驱动器空间中,通常是隐藏的。另一方面,高速缓存内存是一种比主内存和/或RAM更快的内存类型。它极大地减少了数据访问时间,因为与RAM相比,它更靠近CPU并且速度

正确利用sessionStorage保护敏感数据的方法正确利用sessionStorage保护敏感数据的方法Jan 13, 2024 am 11:54 AM

如何正确使用sessionStorage存储敏感信息,需要具体代码示例无论是在Web开发还是移动应用开发中,我们常常需要存储和处理敏感信息,如用户登录凭证、身份证号码等。在前端开发中,使用sessionStorage是一种常见的存储方案。然而,由于sessionStorage是基于浏览器的存储,需要注意一些安全性的问题,以确保存储的敏感信息不被恶意访问和利用

PHP和swoole如何实现高效的数据缓存和存储?PHP和swoole如何实现高效的数据缓存和存储?Jul 23, 2023 pm 04:03 PM

PHP和swoole如何实现高效的数据缓存和存储?概述:在Web应用开发中,数据的缓存和存储是非常重要的一部分。而PHP和swoole提供了一种高效的方法来实现数据的缓存与存储。本文将介绍如何使用PHP和swoole来实现高效的数据缓存和存储,并给出相应的代码示例。一、swoole简介:swoole是一个针对PHP语言开发的,高性能的异步网络通信引擎,它可以

一文读懂人工智能表:从MindsDB说起一文读懂人工智能表:从MindsDB说起Apr 12, 2023 pm 12:04 PM

本文转载自微信公众号「活在信息时代」,作者活在信息时代。转载本文请联系活在信息时代公众号。对于熟悉数据库操作的同学来说,编写优美的SQL语句,从数据库中想方设法找出自己需要的数据,是常规操作了。而对于熟悉机器学习的同学来说,获取数据,对数据进行预处理,建立模型,确定训练集和测试集,用训练好的模型对未来进行一系列的预测,也是一种常规操作了。那么,我们能否将两种技术结合起来呢?我们看到数据库里存储了数据,而进行预测需要基于以往的数据。如果我们通过数据库里现有的数据,对于未来的数据进行查询的话,那么是

Java集合框架全解析:解剖数据结构,揭秘高效存储之道Java集合框架全解析:解剖数据结构,揭秘高效存储之道Feb 23, 2024 am 10:49 AM

Java集合框架概述Java集合框架是Java编程语言的重要组成部分,它提供了一系列可以存储和管理数据的容器类库。这些容器类库具有不同的数据结构,可以满足不同场景下的数据存储和处理需求。集合框架的优势在于它提供了统一的接口,使得开发人员可以使用相同的方式来操作不同的容器类库,从而降低了开发难度。Java集合框架的数据结构Java集合框架中包含多种数据结构,每种数据结构都有其独特的特性和适用场景。下面是几种常见的Java集合框架数据结构:1.List:List是一个有序的集合,它允许元素重复。Li

使用PHP数组实现数据缓存和存储的方法和技巧使用PHP数组实现数据缓存和存储的方法和技巧Jul 16, 2023 pm 02:33 PM

使用PHP数组实现数据缓存和存储的方法和技巧随着互联网的发展和数据量的急剧增长,数据缓存和存储成为了我们在开发过程中必须要考虑的问题之一。PHP作为一门广泛应用的编程语言,也提供了丰富的方法和技巧来实现数据缓存和存储。其中,使用PHP数组进行数据缓存和存储是一种简单而高效的方法。一、数据缓存数据缓存的目的是为了减少对数据库或其他外部数据源的访问次数,从而提高

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

에디트플러스 중국어 크랙 버전

에디트플러스 중국어 크랙 버전

작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음

SublimeText3 영어 버전

SublimeText3 영어 버전

권장 사항: Win 버전, 코드 프롬프트 지원!

ZendStudio 13.5.1 맥

ZendStudio 13.5.1 맥

강력한 PHP 통합 개발 환경