首页 / ORACLE / oracle存储过程
oracle存储过程
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了oracle存储过程,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3229字,纯文字阅读大概需要5分钟。
内容图文
![oracle存储过程](/upload/InfoBanner/zyjiaocheng/502/3e9cef13464041dba57185e35712507f.jpg)
之前我们学的pl/sql代码都属于匿名块...
没有名字
匿名块的缺点
1. 不能够保存在数据库服务器上 如果想以后使用 只能把它复制到一个文件中
或者是 另存为成*.sql文件.下一次再使用的时候 还要复制回来或者 打开这个sql
文件再执行,比较麻烦! 不可复用
2.匿名块执行速度慢
第二次执行的时候 要从新编译 再运行 比较慢
而存储过程 相当于给匿名块起一个名字 预编译的sql语句
编译好以后 存到数据库服务器上 下一次直接用就可以了
存储过程执行速度比匿名块快
二. 什么是存储过程
预编译的sql语句, 把以前的pl/sql匿名块 起一个名字 预编译保存到数据库服务器上
就是存储过程.
三. 如何编写存储过程
把匿名块转换成存储过程需要两步
1. declare 改成is 或者as
2. create or replace procedure 存储过程名
(一)定义存储过程
语法如下:
create or replace procedure 存储过程名
is
begin
end;
演示代码:
--定义一个存储过程
--需求: 给所有的员工涨工资
create or replace procedure increase_salary
is
cursor c is
select * from emp2 for update;
begin
for v_temp in c loop
if(v_temp.sal<1200) then
update emp2 set sal=sal+500 where current of c;--当前游标指向的记录
elsif(v_temp.sal<1500) then
update emp2 set sal=sal+300 where current of c;--当前游标指向的记录
else
update emp2 set sal=sal+100 where current of c;--当前游标指向的记录
end if;
end loop;
end;
(二)调用存储过程
(1) 命令窗口
execute 存储过程名;
execute increase_salary;
(2) 使用pl/sql代码块执行
begin
存储过程名();
end;
演示代码:
begin
increase_salary();
end;
*******************************带参数的存储过程***********************************
--需求: 求两个数中的比较大的那个数是谁
--in 输入参数 只能输入不能当做左值
--out 输出参数 只能用做左值 不能给它传入一个值 如果程序员非要给一个输出参数 传值 打印的时候是打印不出来的
create or replace procedure proce(v_a in number,v_b number,v_res out number,v_temp in out number)
is
begin
dbms_output.put_line(v_res);
end;
declare
v_a number:=3;
v_b number:=4;
v_res number;
v_temp number:=5;
begin
proce(v_a,v_b,v_res,v_temp);
--dbms_output.put_line(v_res);
--dbms_output.put_line(v_temp);
end;
********************************存储过程和函数的区别*******************************
1.存储过程没有返回值, 函数是有返回值的
2.存储过程一般用于执行某个业务逻辑(涨工资),函数一般用来辅助sql进行计算的...
3.函数是可以用在select语句后面的,而存储过程不能用在select 语句后面
select lower(ename) from emp
*****************************存储过程如果想返回一个值怎么办?*************************
使用 输出参数 代替返回值
一.什么是函数 what
函数:类似于java方法 有一定的作用
区别: 必须有返回值
二.自定义函数
function
根据员工的工资 得到税率
create or replace function sal_tax(v_sal number)
return number
is
v_tax number;
begin
if(v_sal<2000) then
v_tax:=0.10;
elsif(v_sal<2750) then
v_tax:=0.15;
else
v_tax:=0.20;
end if;
return v_tax;
end;
使用函数
select lower(ename),sal_tax(sal) from emp;
****************学生练习: 定义一个函数 *******************
输入参数 boolean 类型的变量
返回值 varchar2 如果传入的是true 返回‘true‘;传入false 返回‘false‘;
传入null 返回‘null‘
oracle存储过程
标签:根据 区别 char turn 输出 逻辑 lin creat 定义函数
本文系统来源:https://www.cnblogs.com/MrTanJunCai/p/9907449.html
内容总结
以上是互联网集市为您收集整理的oracle存储过程全部内容,希望文章能够帮你解决oracle存储过程所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。