`

Oracle存储过程、触发器

    博客分类:
  • DB
 
阅读更多
1、存储过程

创建一个简单的存储过程:接收两个参数,插入到test_table表中
create or replace procedure proctest (a in VARCHAR2, b in VARCHAR2)
is
begin
  insert into test_table (test_id, test_content) values (a, b);
end proctest;


创建一个带输出的存储过程:接收参数a,输出参数b
create or replace procedure proctest2 (a in VARCHAR2, b out VARCHAR2)
is
begin
  insert into test_table(test_id) values (a);
  select test_id into b from test_table where test_id=a;
end proctest2;


创建一个存储过程,使用For循环遍历游标:
create or replace procedure proc_test is
begin
Declare 
     Cursor myCur is select * from emp;
  Begin
     for varA in myCur
      loop
         update USER set user_type=varA.emp_type where user_code=varA.emp_code;
      end loop;
  End;
  commit;
  Exception
   WHEN OTHERS
   Then
      rollback;
end proc_test;

--执行存储过程:
exec proc_test;
--删除存储过程:
DROP PROCEDURE proc_test;


当表名、字段名、数据库名作为存储过程的参数时,需要用动态sql,再用execute immediate来运行。
动态sql是一个字符串,用连接符||连接sql字符串(动态sql中的连接符||相当于java字符串的连接符+)。

java调用存储过程范例,见附件

存储过程一些资料:
http://www.cnblogs.com/sumsen/archive/2012/05/30/2525431.html
http://www.bitscn.com/pdb/oracle/200806/144607.html
http://www.cnblogs.com/hero4china/articles/base_rule_oracle_procedure.html
http://www.cnblogs.com/kkcheng/archive/2010/03/19/1689672.html
http://www.itpub.net/thread-1132571-1-1.html
http://tech.163.com/05/0707/09/1O24HIJ400091589.html
http://www.itpub.net/thread-1384981-1-1.html
http://www.cnblogs.com/superjt/archive/2013/06/09/3129403.html

java调用oracle存储过程 返回多个结果集:
http://blog.csdn.net/jzy23682891/article/details/10019721


2、触发器

oracle中创建触发器时加for each row时,是行级触发器,否则就是语句级触发器

行级(for each row)选项决定了触发器是行级还是语句级,如规定了for each row ,则触发器每影响表一行,就执行一次;否则,触发器仅仅在相应的语句被执行时触发一次,而不是针对每行。

行级触发器对DML语句影响的每个行执行一次,语句级触发器对每个DML语句执行一次。比如,如果在表中插入的数据为500行,那么这个表上的语句级触发器只执行一次,而行级触发器就要执行500次。语句触发器都只会针对指定语句激活一次。比如一条update语句,无论update了多少行,也只会调用一次update语句触发器。

对于行级触发器而言,当一个DML语句操作影响到表中的多行记录时,行级触发器会针对每一行执行一次。
在行级触发器中有一个特点,当创建before行级触发器时,可以在触发器中引用受到影响的行值,甚至可以在触发器中设置它们。
只有在行触发器中才能使用:new和:old来访问列的新值和旧值,语句级触发器不可以。

下面将在表上创建一个行级触发器,并使用序列生成主键值,这是非常常见的for each row触发器的用途。
create or replace trigger "trig_test"
    before
insert on test
    for each row
declare
  -- local variables here
begin
  select test_seq.nextval into :new.id from dual;
end trig_test ;
分享到:
评论

相关推荐

    浅析Oracle存储过程触发器在数据同步中的应用

    ### 浅析Oracle存储过程触发器在数据同步中的应用 #### 一、引言 随着企业信息化程度的不断提高,各种业务系统的数据交换和共享成为常态。然而,在实际操作过程中,由于历史遗留问题或是多系统并存的情况,经常会...

    浅析Oracle存储过程触发器在数据同步中的应用.pdf

    Oracle存储过程和触发器是数据库管理系统中非常重要的两个特性,它们在数据同步和业务逻辑处理中发挥着关键作用。在Oracle数据库系统中,存储过程是一种预编译的PL/SQL代码块,它允许用户定义一系列操作,这些操作...

    oracle存储过程及触发器总结

    ### Oracle存储过程及触发器总结 #### 一、Oracle 存储过程概述 在Oracle数据库中,存储过程是一种预先编译好的SQL代码块,它可以接受输入参数、返回单个值或多个值,并能够调用其他存储过程。存储过程在数据库...

    oracle存储过程和触发器chm格式

    Oracle存储过程和触发器是数据库管理系统中的重要组成部分,它们在数据处理和业务逻辑实现中扮演着关键角色。本文将深入探讨这两个概念以及它们在Oracle数据库中的应用。 首先,Oracle存储过程是一组预编译的SQL...

    Oracle中通过触发器来追踪用户的活动

    创建登录触发器是追踪过程的第一步,该触发器在用户登录时捕获相关信息并存入审计表。例如,触发器可以获取用户ID、会话ID(通过SYS_CONTEXT函数从v$session表获取)、主机名以及精确的登录时间和日期。 接着,需要...

    ORACLE中触发器和存储过程介绍相关代码

    在Oracle数据库系统中,触发器(Triggers)和存储过程(Stored Procedures)是两种非常重要的数据库对象,它们在数据管理、业务逻辑实现以及数据验证等方面起着关键作用。本资源包含与"ORACLE中触发器和存储过程介绍...

    Oracle数据库创建存储过程和触发器

    Oracle 数据库创建存储过程和触发器 Oracle 数据库创建存储过程和触发器是高级数据库开发设计的重要组成部分。存储过程和触发器是一种特殊类型的数据库对象,它们可以实现复杂的业务逻辑和数据处理操作。 存储过程...

    oracle存储过程和触发器

    ### Oracle存储过程与触发器详解 #### 存储过程与触发器的作用 在软件开发,尤其是数据库相关的项目中,Oracle的存储过程和触发器扮演着举足轻重的角色。它们能够在简化代码、提高效率和增强数据完整性方面发挥...

    Oracle数据库存储过程触发器包是使用事例

    Oracle数据库存储过程触发器包是使用事例,可以说经典

    oracle存储过程与触发器教程

    很详细的oracle存储过程与触发器教程,学习oracle存储过程与触发器的朋友可以下载来看看!

    Oracle存储过程和触发器教程

    Oracle存储过程和触发器是数据库管理系统中非常重要的概念,它们在数据库设计和应用程序开发中扮演着核心角色。在这个Oracle存储过程和触发器教程中,我们将深入探讨这两个概念,以及它们如何帮助我们创建高效、安全...

    oracle job调度存储过程 触发器 定时更新数据库

    总的来说,Oracle Job调度存储过程和触发器是数据库管理中不可或缺的工具,它们允许数据库管理员自动化许多常规任务,提高效率,减少人为错误,并确保数据的一致性和准确性。通过灵活地配置和组合这些功能,可以实现...

    Oracle触发器与存储过程高级编程-第3版itpub.rar

    《Oracle触发器与存储过程高级编程》第3版是一本深入探讨Oracle数据库中触发器和存储过程技术的专业书籍。在Oracle数据库系统中,触发器和存储过程是数据库管理员和开发人员进行复杂业务逻辑处理和数据管理的重要...

    oracle中job调度存储过程 触发器 定时更新数据库.rar

    在Oracle数据库系统中,"Job调度存储过程"和"触发器"是两种强大的工具,用于自动化数据库维护和管理任务。本教程将深入探讨这两个概念以及它们如何协同工作以实现定时更新数据库。 首先,我们来理解"Job调度存储...

    oracle触发器的创建与使用

    通过学习和掌握Oracle中的存储过程和触发器,开发人员和DBA可以更高效地管理数据库,实现更精细的控制,确保数据的准确性和一致性。在实际项目中,正确使用存储过程和触发器能够提升系统性能,降低维护成本,增强...

    Oracle存储过程和触发器(PL/SQL入门教程)

    Oracle存储过程和触发器(PL/SQL入门教程) Oracle存储过程和触发器(PL/SQL入门教程)

    oracle 触发器实时调用java 中http接口

    在Oracle数据库中,触发器是一种特殊类型的存储过程,它会在特定的数据库操作(如INSERT、UPDATE或DELETE)发生时自动执行。在这个场景中,我们关注的是一个特定的触发器,它在插入数据后被调用,并通过存储过程来...

    Oracle存储过程和触发器基本操作解析.docx

    Oracle存储过程和触发器是数据库管理中的核心组件,它们在数据处理和业务逻辑实现中扮演着重要角色。在Oracle数据库中,存储过程是一组预编译的SQL语句和PL/SQL代码,可以被多次调用,提高了代码的复用性和执行效率...

    Oracle连接查询子查询以及存储过程触发器讲解

    在Oracle中,连接查询和子查询以及存储过程与触发器是数据库管理与开发中的核心概念,下面将对这些主题进行深入讲解。 首先,让我们探讨**连接查询**。在数据库操作中,连接查询用于合并两个或更多表的数据,根据...

Global site tag (gtag.js) - Google Analytics