首页 > 数据库技术 > 详细

(学习笔记)Oracle存储过程、存储函数

时间:2018-07-26 15:51:51      阅读:172      评论:0      收藏:0      [点我收藏+]

Oracle存储过程和存储函数都是数据库对象,他们都是一段可执行的程序,存储过程没有返回值,存储函数有返回值

存储过程——语法:

    create or replace procedure 存储过程名(参数列表)  //创建或替换存储过程(已存在就替换,否则就新建,参数列表可以为空)

    as  

      //说明或声明部分

    brgin

      //程序体

    end;

   执行上述代码会有一条以编译的提示,接下来就可以进行调用

   调用方式: 1.执行 exec 存储过程名+();

        2.begin

          存储过程名+();   //调用一次

          存储过程名+();    /在调用一次

        end;

 自行一个带参数的存储过程

  建表 create table employee (in number(3,0) pormary key, name nvarchar2(3), salary number(7,2)); 插入一条测试数据 insert into employee (1,‘大明‘,4500);

  create or replace procedure raiseSalary(eno number)  //创建名为raiseSalary的储存过程,接受一个员工id参数
  as
  --定义变量保存涨前的薪水  
  old_salary employee.salary%;  //定义加薪前的薪资保存变量
  begin
  --得到员工涨前的薪水
  select salary into old_salary from employee where id = eno;  //查询当前薪资 并赋值给上一个变量
  --给该员工涨100工资
  update employee set salary = old_salary + 100 where id = eno;  //update更新薪资+100
  dbms_output.put_line(‘涨前 ‘||old_salary || ‘ 涨后‘||(old_salary+100));  //输出
  end;

  调用:raiseSalary(1);输出:涨前4500涨后4600,表中的数据也有更新

存储函数——语法:

 create or replace function 存储函数名(参数列表)  //创建或替换存储函数(已存在就替换,否则就新建,参数列表可以为空)

  return (返回值类型)

  as

  bgein

  return 结果;

  end;

  例子:给上面的表添加一个字段final_salary表示年终奖,插入一条数据 insert into employee (2,‘小明‘,8000,10000);

  create or replace function query_emp_final_salry(eno number)  //创建一个query_emp_final_salry 存储函数
  return number  //表示次返回值的类型是个number
  as
  salary employee.salary%type;  //定义变量保存薪资
  final_salary employee.final_salary%type;  //定义变量保存年终奖
  begin
  select salary,final_salary into salary,final_salary from employee where id = eno;  //查询并赋值
  return salary * 12+final_salary;  //计算返回
  end;

  调用 

(学习笔记)Oracle存储过程、存储函数

原文:https://www.cnblogs.com/yemingqianduzou/p/9371866.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!