Oracle 常用的循环小结
来源:互联网 发布:mysql 查询总数和分页 编辑:程序博客网 时间:2024/06/06 03:19
引言
作为程序语言中的三大基本逻辑之一的循环,这次在我的项目开发中也用到了不少,但是有一个问题不知道是不是蛮长时间没有使用导致,要用到的时候,不能第一时间完整地写出,也许是生疏了,也也许是之前为了方便都是从以前的笔记ctrl+v的缘故吧。
Oracle中五种循环:
1、普通循环: FOR i IN (1…N)
应用:
FOR i IN (1...100) LOOP//循环语句END LOO;其实就相当于 for(int i=0;i<100;i++)
2、集合(游标)循环: FOR k IN (sql子查询结果集合/游标)
2.1集合循环应用:
FOR k IN (Select ra2.Levelno,rownum + 8 ordernum From (Select Distinct Cl.Levelno From Pdm_Ylzj_Crutoqualinspe c --只选择合并后的数据 Inner Join PDM_YLZJ_CruToQualSumSheetD sd On sd.Pdm_Ylzj_Crutoqualinspeid = c.Pdm_Ylzj_Crutoqualinspeid Inner Join Pdm_Ylzj_Crutolevelstruc Cl On Cl.Pdm_Ylzj_Crutoqualinspeid = c.Pdm_Ylzj_Crutosendinspeid And c.Provincesno = p_province And c.Purchaselevel = i.PURCHASELEVEL Left Join Pdm_Ylzj_Recrutoqualinspe Fj On Fj.Inspectionno = c.Inspectionno And Nvl(Fj.Isdeleted, '0') = '0' Where Nvl(c.Isdeleted, 0) = 0 And Cl.Leveltype = '2' And c.Provincesno = p_Province And Instr(Decode(p_Yearno, '', c.Yearno, p_Yearno), c.Yearno) > 0 Order By Cl.Levelno Asc) ra2) LOOP v_tmpDiff2Ratio := F_GetStrutsLvlWeightRatio(p_Cigatype, p_Yearno, p_Projtype, p_Level, p_Part, p_Grade, p_Way, p_Inspeuser, p_Inspedatestart, p_Inspedateend, p_Province, p_city, p_country, p_Isqualify, i.Purchaselevel, k.levelno, '2'); v_upd2Diff2Sql := 'Update DynatempData dd set T' || k.ordernum || '=''' || v_tmpDiff2Ratio || ''' where dd.Dynatempdataid=''' || v_Row2Guid || ''' and dd.conditionid=''' || p_conditionId || ''''; Execute Immediate v_upd2Diff2Sql; END LOOP;
2.2 游标For循环应用
create or replace procedure p_cursor_Employee is EmpRows Employees%rowtype; cursor empRows is select * from Employees; begin for EmpRows in empRows loop dbms_output.put_line(EmpRows.EmployeeId||’,'||EmpRows.Name||’,'||empRows%rowcount); end loop; end p_cursor_Employee;
3、WHILE 循环:While 逻辑判断式 Loop …End Loop
应用:
While i<100 Loopi :=i+2;End loop;
4、EXIT WHEN :Exit when(逻辑表达式)
应用例
CREATE OR REPLACE PROCEDURE proc_test_exit_when IS i Number;BEGIN i := 0; LOOP Exit When(i > 10); Dbms_Output.put_line(i); i := i + 1; END LOOP;END;当i>10 时退出循环,否则一直执行
0 0
- Oracle 常用的循环小结
- Oracle 常用的函数小结
- Oracle 常用的函数小结
- Oracle 常用的函数小结
- oracle循环语句小结
- oracle循环语句小结
- oracle循环语句小结
- oracle循环语句小结
- oracle循环语句小结
- oracle循环语句小结
- oracle循环语句小结
- oracle循环语句小结
- oracle循环语句小结
- oracle循环语句小结
- oracle循环小结
- oracle循环语句小结
- Oracle 常用的三种循环 Loop
- 常用oracle小结
- Python 中对数据的排序问题(numpy , pandas)
- C# 语法
- Knockoutjs快速入门(经典)
- hadoop资料收集
- KeyEvent 键码值
- Oracle 常用的循环小结
- View(基本控件)、添加竖线
- Git详解之一 Git起步
- DOM4J使用
- iOS学习笔记14-CocoaPods pod install/pod update更新慢的问题
- exchange2013 pop3模式客户端设置的一些端口变化
- HDU 5407 CRB and Candies (2015年多校比赛第10场)
- 统计简单学_正态分布
- 系统架构 很喜欢所以转发了