惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

WordPress大学
WordPress大学
M
MIT News - Artificial intelligence
MyScale Blog
MyScale Blog
博客园_首页
G
Google Developers Blog
博客园 - 【当耐特】
美团技术团队
博客园 - 聂微东
Stack Overflow Blog
Stack Overflow Blog
Vercel News
Vercel News
小众软件
小众软件
博客园 - 司徒正美
雷峰网
雷峰网
T
Tailwind CSS Blog
V
V2EX
博客园 - 三生石上(FineUI控件)
F
Fortinet All Blogs
罗磊的独立博客
量子位
P
Proofpoint News Feed
Microsoft Azure Blog
Microsoft Azure Blog
月光博客
月光博客
A
About on SuperTechFans
Hugging Face - Blog
Hugging Face - Blog

博客园 - 老狐狸

关于Update语句在不同数据库中的差别 F_GETTABLELID 正则表达式求值 - 老狐狸 - 博客园 创建层次查询 ultrawebgrid - 老狐狸 - 博客园 javascript - 老狐狸 - 博客园 case when用法和and 后加条件 exp/imp导出导入工具的使用 ASP.NET1.1中Grid自定义眉头 asp.net1.0 TreeView asp.net2.0 TreeView 创建记录、数组 关闭远程数据库连接 创建游标 创建新的序列 创建隐式游标 创建临时表 更新表(多表相关联)
出错存储过程
老狐狸 · 2006-10-24 · via 博客园 - 老狐狸

包头:
create or replace package ErrorLog is

  -- Author  : tuil
  -- Created : 2006-9-18 13:45:53
  -- Purpose :

  -- Public type declarations
  TYPE type_cur IS REF CURSOR;
  procedure InsertLogError(ErrorId     in varchar2,
                                       Application in varchar2,
                                       Host        in varchar2,
                                       Type        in varchar2,
                                       Source      in varchar2,
                                       Message     in varchar2,
                                       User        in varchar2,
                                       AllXml      in clob default null,
                                       StatusCode  number,
                                       TimeUtc     in date);
  procedure GetMasterErrorsXml(Application in varchar2,
                         PageIndex   in number,
                         PageSize    in number,
                         TotalCount  out number,
                         v_cur       out type_cur);
  procedure GetDetailErrorXml(Application in varchar2,
                              ErrorId     in varchar2,
                              v_cur       out type_cur);

end ErrorLog;
包体:
create or replace package body ErrorLog is

  procedure InsertLogError(ErrorId     in varchar2,
                       Application in varchar2,
                       Host        in varchar2,
                       Type        in varchar2,
                       Source      in varchar2,
                       Message     in varchar2,
                       User        in varchar2,
                       AllXml      in clob default null,
                       StatusCode  number,
                       TimeUtc     in date) is
  begin
    insert into s_errorlog
      (errorid,
       application,
       host,
       type,
       source,
       message,
       username,
       statuscode,
       timeutc,
       SEQUENCE,
       allxml)
    values
      (ErrorId,
       Application,
       Host,
       Type,
       Source,
       message,
       User,
       StatusCode,
       timeutc,
       SEQ_S_ERRORLOG.Nextval,
       AllXml);
  end InsertLogError;
  procedure GetMasterErrorsXml(Application in varchar2,
                               PageIndex   in number,
                               PageSize    in number,
                               TotalCount  out number,
                               v_cur       out type_cur) is
 
    v_sql   VARCHAR2(1000);
    v_count number;
    v_Plow  number;
    v_Phei  number;
  Begin
    -----------------------------------------取分页总数
    v_sql := 'select count(*) from s_errorlog t where t.Application=''' ||
             Application || '''';
    execute immediate v_sql
      into v_count;
    TotalCount := ceil(v_count / PageSize);
    --------------------------------------------显示任意页内容
    v_Plow := PageIndex * PageSize + 1;
    v_Phei := v_Plow + PageSize - 1;
    v_sql  := 'SELECT ErrorId,
    Application,
    Host,
    Type,
    Source,
    Message,
    username,
    StatusCode,
    TimeUtc
    FROM (SELECT ErrorId,
        Application,
        Host,
        Type,
        Source,
        Message,
        username,
        StatusCode,
        TimeUtc, row_number() over(ORDER BY Sequence DESC) rn
    FROM  s_errorlog a WHERE A.application = ''' || Application || ''')
    WHERE rn BETWEEN ' || v_Plow || ' AND ' || v_Phei || '';
    open v_cur for v_sql;
 
  end;

  procedure GetDetailErrorXml(Application in varchar2,
                              ErrorId     in varchar2,
                              v_cur       out type_cur) is
    v_sql VARCHAR2(1000);
  begin
    v_sql := 'select allxml from s_errorlog t where t.application = ''' ||
             Application || ''' and t.errorid =''' || ErrorId || '''';
    open v_cur for v_sql;
  end;
end ErrorLog;
表结构:
create table S_ERRORLOG
(
  ERRORID     VARCHAR2(50) not null,
  APPLICATION VARCHAR2(60),
  HOST        VARCHAR2(50),
  TYPE        VARCHAR2(100),
  SOURCE      VARCHAR2(60),
  MESSAGE     VARCHAR2(500),
  USERNAME    VARCHAR2(50),
  STATUSCODE  NUMBER,
  TIMEUTC     DATE,
  SEQUENCE    NUMBER,
  ALLXML      CLOB
)