`

oracle procedure trigger 小例子

阅读更多
  --sql window中写存储过程(本例对dept_copy表的操作)
create or replace procedure p_update_dept(
  l_remarker in number,--0增,1删,2改
  l_deptno in number,
  l_dname in varchar2,
  l_loc in varchar2,
  l_result out varchar2 --传出参数
)
is
begin
  l_result := '0000';
  if l_remarker = 0 then --0 增加
   insert into dept_copy values(l_deptno,l_dname,l_loc);
  elsif l_remarker = 1 then  --1删除
   delete from dept_copy p where p.deptno = l_deptno;
  elsif l_remarker = 2 then  --2修改
    update dept_copy p set p.loc = l_loc,p.dname = l_dname where p.deptno = l_deptno;
  end if;
  commit;
  exception
    when others then
      rollback;
      l_result:='1111';
 end;

-----------------------------------------------
  --调用存储过程(主要是java中调用)
-- test window中调用存储过程(可在output选项卡中看到执行返回的结果,对哪个表操作,看哪个表也能看出来。)
declare 
  -- Local variables here
  l_result varchar2(4); --返回值的长度是好写上
begin
  -- Test statements here
  p_update_dept(0,99,'ACCOUNTING','NEW YORK',l_result); --p_update_dept为存过程名称,括号里为存储过程定义的参数。
  dbms_output.put_line(l_result);
end;
========================触发器小例子===================

--行级触发器,一个表中数据发生变化时同时修改另一个表中对应字段的值
create or replace trigger trig2
  after update on dept_copy
  for each row  --针对每一行
begin
  update emp_copy e
     set e.deptno = :NEW.deptno
   where e.deptno = :old.deptno;
end;
/*当表dept_copy的deptno字段发生变化,修改对应表emp_copy的deptno字段的值
*/
-- 当执行更新下表时触发器被触发
update dept_copy d set d.deptno = 99 where d.deptno = 10;
---------------------------------------------------
---语句级触发器(用的较少)
create or replace trigger t_emp_copy
  before insert or delete or update on emp_copy
begin
  if inserting then
    insert into emp_copy_log
    values
      (seq_emp_copy_log.nextval, 'insert', user, sysdate);
  elsif deleting then
    insert into emp_copy_log
    values
      (seq_emp_copy_log.nextval, 'delete', user, sysdate);
  elsif updating then
    insert into emp_copy_log
    values
      (seq_emp_copy_log.nextval, 'update', user, sysdate);
  end if;
end;
分享到:
评论

相关推荐

    oracle trigger at a certain time

    在这个例子中,`my_procedure`是你要执行的存储过程,`start_date`定义了首次执行时间,`repeat_interval`定义了执行频率。 三、数据库触发器示例 ```sql CREATE OR REPLACE TRIGGER daily_check BEFORE LOGON ON ...

    存储过程、触发器、定时器例子(oracle)

    在Oracle中,创建存储过程使用`CREATE PROCEDURE`语句,调用则通过`EXECUTE`命令。例如,一个简单的存储过程可能用于计算两个数字的和: ```sql CREATE OR REPLACE PROCEDURE add_numbers (p_num1 NUMBER, p_num2...

    Oracle存储过程、触发器

    在这个例子中,`ProcTest.java`使用JDBC的`CallableStatement`来调用存储过程,设置输入参数并获取输出结果。 总结来说,Oracle存储过程和触发器是数据库编程的重要工具,它们有助于提高代码的复用性和数据库的性能...

    oracle job实例 测试通过

    从给定的Oracle Job实例测试通过的描述与代码片段中,我们可以提炼出多个关于Oracle数据库管理、编程与作业调度的关键知识点。以下是对这些知识点的详细解释: ### 1. 创建序列(Sequence) 在Oracle数据库中,...

    Oracle数据库语句

    在这个例子中,每当向`users`表中插入新记录时,`insert_user_trigger`会在插入操作之前被触发,自动为`created_at`字段设置当前系统日期。 通过学习和实践这些Oracle数据库语句、存储过程、函数和触发器,开发者...

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

    CREATE OR REPLACE PROCEDURE PROC_UPDATE_EMPLOYEE( p_employee_id NUMBER, p_first_name VARCHAR2, p_last_name VARCHAR2) AS BEGIN UPDATE employees SET first_name = p_first_name, last_name = p_last_...

    oracle存储过程及触发器总结

    CREATE TRIGGER trigger_name BEFORE|AFTER|INSTEAD OF {INSERT|UPDATE|DELETE|TRUNCATE|DROP|SELECT FOR UPDATE} ON table_name REFERENCING OLD AS old NEW AS new FOR EACH ROW DECLARE -- 变量声明 BEGIN -- ...

    Oracle PLSQL实例精解(原书第4版) 源码下载

    6. **存储过程和触发器**:学习编写存储过程来封装复杂的业务逻辑,以及触发器(TRIGGER)的使用,例如自动执行某些操作当数据更改时。 7. **PL/SQL块**:理解声明部分、执行部分和异常处理部分的结构,以及如何在...

    oracle存储过程游标

    CREATE OR REPLACE TRIGGER del_s BEFORE DELETE ON s_c FOR EACH ROW BEGIN INSERT INTO s_c1 (id, name) VALUES (:old.id, :old.name); END; ``` 该触发器定义了在`s_c`表上进行删除操作前的逻辑,即当有记录被...

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

    CREATE OR REPLACE TRIGGER my_trigger BEFORE INSERT ON my_table FOR EACH ROW BEGIN IF :new.column_value IS NULL THEN RAISE_APPLICATION_ERROR(-20001, 'Column value cannot be null'); END IF; END; ``` ...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    Mysql 甲骨文 是个开源的数据库server,可运行在多种平台, 特点是响应速度特别快,主要面向中小企业 中小型企业 PostgreSQL 号称“世界上最先进的开源数据库“,可以运行在多种平台下,是tb级数据库,而且性能也很...

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

    3. 创建一个触发器,比如`DATA_CHANGE_TRIGGER`,当特定表的数据发生变化时,调用`DBMS_SCHEDULER.RUN_JOB('UPDATE_DATABASE_JOB')`,从而启动Job。 4. 在数据库中测试并启用触发器和Job。 总结,Oracle中的Job调度...

    Oracle8i_9i数据库基础

    第一部分 Oracle SQL*PLUS基础 23 第一章 Oracle数据库基础 23 §1.1 理解关系数据库系统(RDBMS) 23 §1.1.1 关系模型 23 §1.1.2 Codd十二法则 24 §1.2 关系数据库系统(RDBMS)的组成 24 §1.2.1 RDBMS 内核 24...

    oracle存储过程和触发器的说明.pdf

    如例子所示: - 无参数函数:`variable t1 char(1); exec t1:=test1; print t1;` - 单参数函数:`variable t2 char(1); exec t2:=test2('5'); print t2;` - 多参数函数:`variable t3 number; exec t3:=test3(2,...

    ORACLE_PlSql-甲骨文学习笔记

    CREATE OR REPLACE TRIGGER update_salary_trigger BEFORE INSERT ON employees FOR EACH ROW BEGIN IF :NEW.salary > 50000 THEN :NEW.salary := 50000; END IF; END; ``` 以上内容涵盖了 Oracle PL/SQL 的基础...

    11oracle的PL-SQL编程-块.过程 PPT

    过程 PPT"中,可能还涉及了存储过程(Stored Procedure)、函数(Function)、触发器(Trigger)等PL/SQL高级特性,以及它们在数据库管理和应用开发中的作用。 综上所述,Oracle的PL/SQL编程是数据库开发中的强大...

    oracle基础

    Oracle基础是数据库管理和开发的重要领域,它涉及到一系列用于高效存储、管理及操作数据的技术和工具。在本资源中,我们重点关注以下几个关键...在提供的“上课例子”中,你将有机会亲手实践这些概念,从而加深理解。

    Oracle--存储过程与触发器基本操作.docx

    以实验中的例子为例,要从S表中查询所有女生的信息,需要先创建存储过程的包规范,定义其公共接口。接着创建包主体,其中包含具体的SQL查询语句。执行存储过程时,可以通过PL/SQL调用这个过程来获取结果。例如: ``...

    oracle学习笔记

    在Oracle中,创建存储过程使用CREATE PROCEDURE语句,调用则使用EXECUTE关键字。例如,以下是一个简单的存储过程示例: ```sql CREATE OR REPLACE PROCEDURE greet(name IN VARCHAR2) AS BEGIN DBMS_OUTPUT.PUT_...

    oracle 存储过程(11)

    在这个例子中,当交易表`transactions`有新插入的记录时,触发器会调用存储过程更新账户余额,并将流水信息写入`account_flow`表。 总结,Oracle存储过程是数据库管理中的强大工具,它能够实现复杂的业务逻辑,提高...

Global site tag (gtag.js) - Google Analytics