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 PL/SQL 存储过程 触发器 ORACLE PL/SQL 存储过程 触发器 子程序 游标
Oracle存储过程和触发器(PL/SQL入门教程) Oracle存储过程和触发器(PL/SQL入门教程)
oracle pl/sql 存储过程和函数与触发器
sql参考手册+oracle触发器与存储过程高级编程,其中sql参考手册包含了t-sql参考、jet-sql参考和oracle-sql参考。
Oracle触发器与pl/sql存储过程编程 chm格式的
oracle数据库服务器的核心概念:数据库表、索引、表空间、约束、触发器、pl/sql以及如何使用PL/SQL触发器和存储过程。
oracle知识点笔记,语法,触发器,存储过程,存储函数,流程控制,游标,异常处理,记录类型,视图,控制用户权限,高级子查询,set运算符,基本的sql_Select语句等等
用户成功登录Oracle后,触发器启动,在指定的数据包中执行一个存储过程查询数据,并通过DBMS_SESSION.SET_CONTEXT过程把它放到上下文中。使用这种方法有以下几个好处:它的性能更强。应用程序上下文数据保存在SGA中...
事务和锁 存储过程和存储函数 程序包和存储过程结果集 触发器定义
Oracle数据库(表空间、用户、授权、存储过程、触发器)
在ORACLE系统里,触发器类似过程和函数,都有声明,执行和异常处理过程的PL/SQL块。 触发器在数据库里以独立的对象存储,它与存储过程和函数不同的是,存储过程与函数需要用户显示调用才执行,而触发器是由一个...
oracle PL_SQL编程 创建存储过程、函数、触发器等
本书重点阐述了Oracle数据库服务器的核心概念:数据库表,索引,表空间,约束,触发器,PL/SQL. 本书针对程序员而编著,掌握一定编程知识会对学习本书有所帮助,但不是必需的。
C# 访问Oracle示例+PL/SQL+存储过程+触发器 完整示例 测试可用 --PL/SQL基础1 declare begin dbms_output.('不输出不换行'); dbms_output.put_line('输出并换行'); end; --PL/SQL基础2 declare dig number(20,...
PL/SQL存储过程语法(注释详细,例子多,注释十分清楚,入门良册) PL/SQL存储过程语法(注释详细,例子多,注释十分清楚,入门良册)
3、要求使用sqlplus,pl/sql或developer建立存储过程,触发器和程序包等代码,其中要求用到游标,异常,各种语句等对表中数据进行处理; 4、使用自己熟悉的开发语言,加入界面,连接数据库; 5、报告要有操作截图...
主要介绍了SQL查询出表、存储过程、触发器的创建时间和最后修改时间示例,本文直接给出代码实例,需要的朋友可以参考下
熟练掌握创建存储过程的方法 熟练掌握存储过程的调用方法 了解触发器的概念、优点 掌握触发器的方法和步骤 掌握触发器的使用 二、实验环境 Windows10 Oracle database 12.1.0.2.0 PL/SQL Developer 12 三...
帮助你写 sql:视图 存储过程 触发器 游标... oracle:视图 存储过程 触发器 游标 包 函数 for循环 while循环 .... sql2005辅助,sql2008辅助,oracle辅助,sql oracle代码生成,sql oracle代码提示
Oracle9i PL/SQL程序设计,存储过程、包、数据库触发器设计,内容比较简单