1、存储过程
create or replace procedure logBigDataTrasfor is queryEndDate Date:=to_date(to_char(sysdate - interval '3' month,'yyyy-MM-dd'),'yyyy-MM-dd'); queryStartDate Date:=to_date(to_char(sysdate - interval '6' month,'yyyy-MM-dd'),'yyyy-MM-dd'); idLog CSSP_USER_ACCESS_LOG_V2.ID_LOG%type; idCsspUser CSSP_USER_ACCESS_LOG_V2.id_cssp_user%type; idCsspOrg CSSP_USER_ACCESS_LOG_V2.Id_Cssp_Org%type; accessDate CSSP_USER_ACCESS_LOG_V2.ACCESS_DATE%type; url CSSP_USER_ACCESS_LOG_V2.Url%type; systemFlag CSSP_USER_ACCESS_LOG_V2.system_flag%type; type cur_type_ref is ref cursor; cur_data cur_type_ref; sqlStr varchar2(2000); totalCount number; totalPages number; i number; v_startRecord number; v_endRecord number; errorCode number; errorMsg varchar2(1000); Begin sqlStr:= 'select count(1) from CSSP_USER_ACCESS_LOG_V2 v2 where v2.access_date<=to_date('''||queryEndDate||''') and v2.access_date>= to_date('''||queryStartDate||''')'; execute immediate sqlStr into totalCount; IF MOD(totalCount,500) = 0 THEN totalPages := totalCount / 500; ELSE totalPages := totalCount / 500 + 1; END IF; i:=1; for i in 1..totalPages LOOP v_startRecord := (i - 1) * 500 + 1; v_endRecord := i * 500; sqlStr:= 'select tempFData.id_log,tempFData.id_cssp_user,tempFData.id_cssp_org,tempFData.access_date,tempFData.url,tempFData.system_flag from (select tempData.*,ROWNUM as rn from (select * from CSSP_USER_ACCESS_LOG_V2 v2 where v2.access_date<=to_date('''||queryEndDate||''') and v2.access_date>= to_date('''||queryStartDate||''') order by access_date desc) tempData where ROWNUM<='||v_endRecord||') tempFData where tempFData.rn >= '||v_startRecord; open cur_data for sqlStr; loop fetch cur_data into idLog,idCsspUser,idCsspOrg,accessDate,url,systemFlag; exit when cur_data%notfound; insert into test_log_bak(id_log,id_cssp_user,id_cssp_org,access_date,url,system_flag) values(idLog,idCsspUser,idCsspOrg,accessDate,url,systemFlag); end loop; close cur_data; commit; end LOOP; EXCEPTION WHEN dup_val_on_index THEN --重复操作 errorCode := SQLCODE; errorMsg := SUBSTR(SQLERRM, 1, 200); dbms_output.put_line(errorCode || ',' || errorMsg); END ;
2、触发器
create or replace trigger test_big_data_user_insert_tr before insert or update on EGISSMTSDATA.test_big_data_user for each row declare date_created Date; date_updated Date; begin date_created:=sysdate; date_updated:=sysdate; case when updating then :new.date_updated := date_updated; when inserting then :new.date_updated := date_updated; :new.date_created := date_created; end case; end;
3、方法
--创建表 create table EGISSMTSDATA.test_uid_code_table ( table_name varchar2(100) NOT NULL, table_id_val number, description varchar2(300) ) tablespace EGISSMTSDATA pctfree 10 initrans 1 maxtrans 255 storage ( initial 64K next 1M minextents 1 maxextents unlimited ); alter table EGISSMTSDATA.test_uid_code_table add constraint PK_TEST_TABLE_NAME primary key (table_name); create public synonym test_uid_code_table for EGISSMTSDATA.test_uid_code_table; --插入数据 insert into test_uid_code_table(table_name,table_id_val,description) values('HELLOWORLD',0,'test') select testNextVal('HELLOWORLD') from dual; --function create or replace function testNextVal( tableName in varchar2 ) return number is currentVal number; sqlStr varchar(2000); PRAGMA AUTONOMOUS_TRANSACTION; begin select table_id_val into currentVal from test_uid_code_table where table_name = tableName; currentVal:=currentVal+1; sqlStr:= 'update test_uid_code_table set table_id_val = '||currentVal ||'where table_name ='''||tableName||''''; EXECUTE immediate sqlStr; commit; return(currentVal); end testNextVal;
相关推荐
Oracle存储过程和触发器是数据库管理系统中的重要组成部分,它们在数据处理和业务逻辑实现中扮演着关键角色。本文将深入探讨这两个概念以及它们在实际应用中的使用。 **Oracle存储过程** Oracle存储过程是一组预...
在文档`oracle.doc`和`PLSQL块.doc`中,可能会详细阐述如何创建、调用存储过程,定义触发器的语法,以及如何在PL/SQL中有效地使用游标。通过学习这些内容,你可以深入了解如何利用Oracle的PL/SQL来构建高效、可靠的...
### Oracle存储过程及触发器总结 #### 一、Oracle 存储过程概述 在Oracle数据库中,存储过程是一种预先编译好的SQL代码块,它可以接受输入参数、返回单个值或多个值,并能够调用其他存储过程。存储过程在数据库...
Oracle存储过程和触发器(PL/SQL入门教程) Oracle存储过程和触发器(PL/SQL入门教程)
### Oracle存储过程与触发器详解 #### 存储过程与触发器的作用 在软件开发,尤其是数据库相关的项目中,Oracle的存储过程和触发器扮演着举足轻重的角色。它们能够在简化代码、提高效率和增强数据完整性方面发挥...
在Oracle存储过程和触发器教程中,你将会学习如何创建、调用和管理这些对象,以及如何使用PL/SQL编写控制流语句,处理异常,以及与表、视图和索引等其他数据库对象交互。"教程说明见这里.txt"文件可能包含详细的步骤...
在Oracle数据库系统中,触发器(Triggers)和存储过程(Stored Procedures)是两种非常重要的数据库对象,它们在数据管理、业务逻辑实现以及数据验证等方面起着关键作用。本资源包含与"ORACLE中触发器和存储过程介绍...
Oracle存储过程和触发器是数据库管理系统中的重要组成部分,它们在数据处理和业务逻辑实现中扮演着关键角色。本文将深入探讨这两个概念以及它们在Oracle数据库中的应用。 首先,Oracle存储过程是一组预编译的SQL...
在Oracle数据库中,触发器(Triggers)是一种存储过程,它们自动执行,当特定的数据库事件发生时,如INSERT、UPDATE或DELETE操作。调试Oracle触发器是开发和维护数据库应用程序时的重要步骤,可以帮助我们找出潜在的...
Oracle存储过程和触发器是数据库管理中的核心组件,它们在数据处理和业务逻辑实现中扮演着重要角色。在Oracle数据库中,存储过程是一组预编译的SQL语句和PL/SQL代码,可以被多次调用,提高了代码的复用性和执行效率...
Oracle 数据库创建存储过程和触发器 Oracle 数据库创建存储过程和触发器是高级数据库开发设计的重要组成部分。存储过程和触发器是一种特殊类型的数据库对象,它们可以实现复杂的业务逻辑和数据处理操作。 存储过程...
总的来说,Oracle Job调度存储过程和触发器是数据库管理中不可或缺的工具,它们允许数据库管理员自动化许多常规任务,提高效率,减少人为错误,并确保数据的一致性和准确性。通过灵活地配置和组合这些功能,可以实现...
在Oracle数据库系统中,"Job调度存储过程"和"触发器"是两种强大的工具,用于自动化数据库维护和管理任务。本教程将深入探讨这两个概念以及它们如何协同工作以实现定时更新数据库。 首先,我们来理解"Job调度存储...
存储过程和触发器都是PL/SQL(Oracle的面向对象的SQL扩展)的一部分,可以在其中编写复杂的业务逻辑。触发器可以调用存储过程,反之亦然,实现更复杂的业务流程。 **实例应用** 例如,假设有一个`employees`表,...
《Oracle触发器与存储过程高级编程》第3版是一本深入探讨Oracle数据库中触发器和存储过程技术的专业书籍。在Oracle数据库系统中,触发器和存储过程是数据库管理员和开发人员进行复杂业务逻辑处理和数据管理的重要...
【标题】:基于Oracle存储过程与触发器的三维空间数据日志管理方法 【描述】:本文探讨了一种使用Oracle存储过程和触发器来管理和记录三维空间数据的日志的方法,旨在提高数据库性能、开发效率,并确保数据的安全。...
在Oracle中,连接查询和子查询以及存储过程与触发器是数据库管理与开发中的核心概念,下面将对这些主题进行深入讲解。 首先,让我们探讨**连接查询**。在数据库操作中,连接查询用于合并两个或更多表的数据,根据...
在PL/SQL存储过程中,使用UTL_HTTP步骤如下: 1. 初始化HTTP请求:创建一个UTL_HTTP的REQUEST对象,指定HTTP方法(如POST)、URL和任何必要的头信息。 2. 发送请求体:如果HTTP请求是POST,需要使用UTL_...