admin管理员组文章数量:1794759
Oracle数据库的存储过程结合游标使用
Oracle数据库的存储过程结合游标使用
文章目录
- Oracle数据库的存储过程结合游标使用
- 前言
- 一、创建Oracle数据库的存储过程?
- 1.Oracle数据库存储过程的创建(带参数)
- 2.Oracle数据库存储过程的创建(不带参数)
- 3.Oracle数据库存储过程基础知识
- 二、Oracle数据库游标知识?
- 1.隐式游标
- 2.显示游标
- 3.游标操作
- 三、Oracle数据库存储过程结合游标使用?
前言
简单记录一下实习期间Oracle数据库的存储过程以及游标知识。
一、创建Oracle数据库的存储过程? 1.Oracle数据库存储过程的创建(带参数) CREATE OR REPLACE PROCEDURE 存储过程的名字(userPhid in number) AS BEGIN 这里填写要执行的与语句 END 存储过程的名字; 2.Oracle数据库存储过程的创建(不带参数) CREATE OR REPLACE PROCEDURE 存储过程的名字() AS BEGIN 这里填写要执行的与语句 END 存储过程的名字; 3.Oracle数据库存储过程基础知识
Oracle有三种参数模式: 1.in 是参数的默认模式,这种模式就是在程序运行的时候已经具有值,在程序体中值不会改变。 2.out 模式定义的参数只能在过程体内部赋值,表示该参数可以将某个值传递回调用他的过程 3.in out 表示高参数可以向该过程中传递值,也可以将某个值传出去
循环控制语句:
1、LOOP 循环:
LOOP EXIT [WHEN 条件表达式] --循环终止条件,为ture时,退出循环,否则再次执行循环体 语句段; END LOOP;2、While循环:
WHILE 条件表达式 LOOP 语句段; END LOOP;3、FOR循环:
FOR 循环变量 in [REVERSE] 初值表达式..终值表达式 LOOP 语句段; END LOOP; 二、Oracle数据库游标知识? 1.隐式游标DML操作和单行SELECT语句会使用隐式游标,它们分别是: 1.插入操作:INSERT。 2.更新操作:UPDATE。 3.删除操作:DELETE。 4.单行查询操作:SELECT … INTO …。
2.显示游标1.带参数的游标声明:
CURSOR 游标名 (参数1 数据类型,......) IS SELECT语句;2.不带参数的游标声明:
CURSOR 游标名 IS SELECT语句; 3.游标操作1.打开游标:
在可执行部分,按以下格式打开游标: OPEN 游标名(参数1,.....) --存在参数 或者 OPEN 游标名 --不存在参数 打开游标时,SELECT语句的查询结果就被传送到了游标工作区。2.关闭游标:
CLOSE 游标名; 显式游标打开后,必须显式地关闭。游标一旦关闭,游标占用的资源就被释放, 游标变成无效,必须重新打开才能使用。 三、Oracle数据库存储过程结合游标使用? CREATE OR REPLACE PROCEDURE csccgc(userPhid in number) AS deptId number;--声明一个变量存储当前用户的部门id orgType varchar(15);--声明一个变量存储当前组织的组织类型 parentId number;--声明一个变量存储当前组织的父级id orgType1 varchar(15);--声明一个变量存储当前组织的组织类型 parentId1 number;--声明一个变量存储当前组织的父级id --声明一个游标跟据存储过程传入的用户id得到部门id cursor did is select phid_dept from pms3_spp_eval_table where phid = userPhid; --声明一个游标跟据根据前面得到的部门id进程查询这个部门是不是一个组织 cursor org(deptid number) is select orgtype,parent_orgid from fg_orglist where phid = deptid; --声明一个游标跟据根据前面得到的部门id进程查询这个部门的父级Id cursor parents(parentid number) is select orgtype,parent_orgid from fg_orglist where phid = parentid; --vrow did%rowtype; --vrow org_type%rowtype; BEGIN --update req_p_d set user_bgh_qty = vrow.qty,user_bgh_amt = vrow.amt where pphid = vrow.glclxqd and phid_itemid = vrow.itemid; --commit; for x in did loop--游标取值 循环 --dbms_output.put_line(x.phid_dept); deptId := x.phid_dept; dbms_output.put_line(deptId); END LOOP; for y in org(deptId) loop--游标取值 循环 --dbms_output.put_line(ytype); orgType := ytype; --dbms_output.put_line(orgType); parentId := y.parent_orgid; --dbms_output.put_line(parentId); END LOOP; if orgType = 'y'--条件 then --开始执行 dbms_output.put_line(111111); else --不满足条件开始执行 for f in parents(parentId) loop--游标取值 循环 orgType := ftype; dbms_output.put_line(orgType); parentId := f.parent_orgid; dbms_output.put_line(parentId); END LOOP; --org_type1 is select orgtype from fg_orglist where phid = parentId; --parentId2 is select parent_orgid from fg_orglist where phid = parentId; --if orgType == 'y'--条件 --then--执行 --else end if; --close did; END csccgc;版权声明:本文标题:Oracle数据库的存储过程结合游标使用 内容由林淑君副主任自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.xiehuijuan.com/baike/1686506946a75267.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论