存储过程和存储函数和触发器示例

1、存储过程示例:为指定的职工在原工资的基础上长10%的工资

SQL> create or replace procedure raiseSalary(empid in number)

    as

    pSal emp.sal%type;

    begin

    select sal into pSal from emp where empno=empid;

    update emp set sal = sal*1.1 where empno=empid;

    dbms_output.put_line(‘员工号:‘ || empid || ‘涨工资前

    ‘ || psal || ‘涨工资后‘ || psal*1.1);

    end;

   /

Procedure created

SQL> set serveroutput on

SQL> exec raisesalary(7369);

员工号:7369涨工资前

800涨工资后880

PL/SQL procedure successfully completed

2、存储函数示例:查询某职工的年收入。

SQL> /**   查询某职工的总收入   */

create or replace function queryEmpSalary(empid in number)

    return number

    as

    pSal number; --定义变量保存员工的工资

    pComm number; --定义变量保存员工的奖金

   begin

   select sal,comm into psal,pcomm from emp where empno = empid;

   return psal*12+nvl(pcomm,0);

   end;

   /

Function created

SQL> declare

    v_sal number;

    begin

    v_sal:=queryEmpSalary(7934);

    dbms_output.put_line(‘salary is:‘|| v_sal);

    end;

    /

salary is:15600

PL/SQL procedure successfully completed

SQL> begin

    dbms_output.put_line(‘salary is:‘|| queryEmpSalary(7934));

    end;

    /

salary is:15600

PL/SQL procedure successfully completed

3、创建触发器示例1:限制非工作时间向数据库插入数据

SQL> create or replace

    trigger securityEmp

    before insert on emp

    declare

    begin

    if to_char(sysdate,‘day‘)in(‘星期四‘,‘星期六‘,‘星期日‘)

    or to_number(to_char(sysdate,‘hh24‘))not between 8 and 18 then 

    raise_application_error(-20001,‘不能在非工作时间插入数据。‘);

    end if;

   end;

   /

Trigger created

4、创建触发器示例2:确认数据(检查emp表中sal 的修改值不低于原值)

SQL> create or replace trigger checkSal

    before update of sal on emp

    for each row

    declare

    begin

    if :new.sal<:old.sal then

    raise_application_error(-20001,‘更新后的薪水比更新前小‘);

    end if;

    end;

   /

Trigger created

存储过程和存储函数和触发器示例,布布扣,bubuko.com

时间: 2024-10-26 00:13:32

存储过程和存储函数和触发器示例的相关文章

Oracle03——游标、异常、存储过程、存储函数、触发器和Java代码访问Oracle对象

作者: kent鹏 转载请注明出处: http://www.cnblogs.com/xieyupeng/p/7476717.html 1.游标(光标)Cursor 在写java程序中有集合的概念,那么在pl/sql中也会用到多条记录,这时候我们就要用到游标,游标可以存储查询返回的多条数据. 语法: CURSOR  游标名  [ (参数名  数据类型,参数名 数据类型,...)]  IS  SELECT   语句; 例如:cursor c1 is select ename from emp; 游标

MySQL学习笔记九:存储过程,存储函数,触发器

存储过程 1.存储过程由一组特定功能的SQL语句组成,对于大型应用程序优势较大,相对不使用存储过程,具有以下优点: a.性能提高,因为存储过程是预编译的,只需编译一次,以后调用就不须再编译 b.重用性提高,可以“一次编写,随便调用” c.安全性提高,可以一定程度上防止SQL注入,还可以使用权限控制 d.减少网络流量,提高网站访问速度 2.存储过程的建立,使用create procedure语句,语法如下 CREATE [DEFINER = { user | CURRENT_USER }] PRO

Oracle-4 - :超级适合初学者的入门级笔记:plsql,基本语法,记录类型,循环,游标,异常处理,存储过程,存储函数,触发器

初学者可以从查询到现在的pl/sql的内容都可以在我这里的笔记中找到,希望能帮到大家,视频资源在 资源, 我自己的全套笔记在  笔记 在pl/sql中可以继续使用的sql关键字有:update delete insert select--into commit  rollback savepoint   ,在这里需要注意的是查询跟以前有些不一样了 plsql由三个块组成:声明部分,执行部分,异常处理部分 declare:在此声明pl/sql用到的变量,类型及游标,以及局部的存储过程的和函数 be

oracle存储过程和存储函数&amp;触发器

oracle存储过程和存储函数 指存储在数据库中供所有用户程序调用的子程序叫存储过程,存储函数 存储过程和存储函数的相同点:完成特定功能的程序 存储过程和存储函数的区别:是否用return语句返回值 =========================创建和使用存储过程============================= 用create procedure命令建立存储过程和存储函数 语法: create [or replace] procedure 过程名(参数列表) as PLSQL子程序

mysql 存储过程和存储函数

14.1.1 创建存储过程 MySQL中,创建存储过程的基本形式如下: CREATE PROCEDURE sp_name ([proc_parameter[,...]]) [characteristic ...] routine_body 其中,sp_name参数是存储过程的名称:proc_parameter表示存储过程的参数列表: characteristic参数指定存储过程的特性:routine_body参数是SQL代码的内容,可以用BEGIN…END来标志SQL代码的开始和结束. proc

Oracle系列:(29)存储过程和存储函数

1.存储过程[procedure] 什么是存储过程? 事先运用oracle语法写好的一段具有业务功能的程序片段,长期保存在oracle服务器中,供oracle客户端(例如,sqlplus)和程序语言远程访问,类似于Java中的函数. 为什么要用存储过程? (1)PLSQL每次执行都要整体运行一遍,才有结果 (2)PLSQL不能将其封装起来,长期保存在oracle服务器中 (3)PLSQL不能被其它应用程序调用,例如:Java 存储过程与PLSQL是什么关系? 存储过程是PLSQL的一个方面的应用

mysql存储过程、存储函数及流程控制

存储过程 一.基本语法 create procedure sp_name([proc_parameter[,...]]) [characteristic...]routine_body begin end sp_name 表示存储过程的名字 proc_parameter 存储过程参数例表[IN OUT INOUT]三个部分组成 其中IN 表示传进来的参数 其中OUT 表示传出去的参数 其中INOUT 表示传进来但最终传回的参数 routine_body 参数是SQL代码的内容(类似于触发器的fo

Oracle学习总结5-存储过程,存储函数,触发器

二.存储过程与存储函数:procedure 1.hello world create or replace procedure hello_world is begin dbms_output.put_line('hello world'); end hello_world; 2. --给指定员工涨100工资,并打印涨前涨后的薪水(存储过程) create or replace procedure raiseSalary(eno in number) is psal emp.sal%type;

MySQL数据库之存储过程与存储函数

1 引言 2 存储过程与存储函数 3 创建与修改存储过程和函数 4 控制语句 5 查看存储过程和函数 6 删除存储过程和函数 7 总结 1 引言 存储过程和存储函数类似于面向对象程序设计语言中的方法,可以简化代码,提高代码的重用性.本文主要介绍如何创建存储过程和存储函数,以及存储过程与函数的使用.修改.删除等操作. 2 存储过程与存储函数 MySQL中提供存储过程与存储函数机制,我们姑且将存储过程和存储函数合称为存储程序.与一般的SQL语句需要先编译然后立即执行不同,存储程序是一组为了完成特定功