二十、Oracle学习笔记:编写存储过程
发布日期:2021-07-26 07:20:43
浏览次数:3
分类:技术文章
本文共 2438 字,大约阅读时间需要 8 分钟。
一、编写存储过程
1.复用匿名代码块,我们需要使用存储过程,函数,触发器等,存储过程就是封装了一个匿名代码块,可以通过参数进行输入,输出值。 我们可以通过调用有名称的存储过程来复用代码块。 2.格式:create [or replace] procedure 名称[(参数1 类型,参数2 类型 , ...)] is|as --变量声明区间 begin --业务逻辑区间 end; /
3.存储过程的调用
(1)直接调用 call 存储过程名(有参传参); (2)plsql调用 begin 存储过程名(有参传参); end;--练习:使用存储过程输出显示helloword create or replace procedure pro_d is begin dbms_output.put_line('Helloworld'); end; / begin pro_d(); end; /
--练习:定义一个存储过程输出参数内容 create or replace procedure pro_out(idc number) is s number(4):=5; begin s:=s+idc; dbms_output.put_line(s); end; / begin pro_out(5); end; /--练习,使用存储过程,获取某一员工的编号对应的姓名和职位 create or replace procedure pro_equ(eno number) is ena emp.ename%type; ejob emp.job%type; begin select ename,job into ena,ejob from emp where empno=eno; dbms_output.put_line(ena||'----'||ejob); end; / begin pro_equ(7369); end; /--练习,传入一个部门编号,查询部门的总工资 create or replace procedure pro_ssal(dno number) is s emp.sal%type; begin select sum(sal) into s from emp where deptno=dno; dbms_output.put_line(s); end; / begin pro_ssal(10); end; /4.存储过程可以使用参数返回数据,特点:此时参数需要一些属性(in |out |in out)。 in表示参数只能传入 不能输出(默认状态下属性为in) out表示参数只能用于输出 in out 表示参数可以传入传出 格式 :参数名 [in|out|in out] 类型
--练习 :传入两个参数,计算两个数的和与差 create or replace procedure pro_sum(a in number,b in number,s out number) is begin s:=a+b; end; / declare total number(8); begin pro_sum(4,5,total); dbms_output.put_line(total); end; / --练习:创建一个存储过程,完成临时表的信息存入dept表中,-- 然后删除临时表数据 drop table dept_bak; create table dept_bak( deptno number(4), dname varchar2(20), loc varchar2(50) ); insert into dept_bak values(11,'a','b'); insert into dept_bak values(12,'c','d'); insert into dept_bak values(13,'e','f'); commit; select * from dept_bak;--编写存储过程--使用行变量接收临时表的数据,同时完成对表的数据插入 create or replace procedure pro_copy is cursor c is select * from dept_bak; begin for rowbak in c loop insert into dept values(rowbak.deptno,rowbak.dname,rowbak.loc); end loop; delete from dept_bak; commit; end; / begin pro_copy(); end; / --练习:返回a和b的和与差 create or replace procedure pro_com(a in number,b in number,s out number,c out number) is begin s:=a+b; c:=a-b; end; / set serveroutput on; declare s1 number(8); s2 number(8); begin pro_com(8,6,s1,s2); dbms_output.put_line(s1); dbms_output.put_line(s2); end; /
转载地址:https://blog.csdn.net/qq_38741971/article/details/81429346 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
路过按个爪印,很不错,赞一个!
[***.219.124.196]2024年04月12日 09时03分23秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
比特币的劣势在哪里?
2019-04-26
BOX定投践行群介绍
2019-04-26
慢慢变富 | 一次财富自由的机会
2019-04-26
python 利用datetime模块转化excel数字日期为标准日期
2019-04-26
python下.ui转为.py文件,并用另一.py调用显示
2019-04-26
解决方案:使用pycharm安装第三方库失败-----更换下载地址镜像
2019-04-26
你跟大神程序员的差距,就在这8本内功心法
2019-04-26
制作PPT的7条黄金法则
2019-04-26
最新!全球学术排名出炉:22所中国大学位居世界100强
2019-04-26
终于有人把SaaS讲明白了
2019-04-26
吐血整理:关于机器学习不可不知的15个概念
2019-04-26
什么是标签?跟数据中台有什么关系?终于有人讲明白了
2019-04-26
2013-2021中国一线、新一线城市排行榜,谁在崛起谁在没落?
2019-04-26
编程大神都读过的10本经典神书,找到了
2019-04-26
在公园遛弯大爷的装备上,我瞥见了一个万亿蓝海新市场
2019-04-26
中国高考地狱级难度的省份,找到了
2019-04-26