oracle 之 循环、游标
来源:互联网 发布:上证指数数据 编辑:程序博客网 时间:2024/04/29 13:02
1.IF-ELSE 结构
set serverout ondeclare v_empno emp.empno%type:=&p_empno; v_sal emp.sal%type;begin select sal into v_sal from emp where empno= v_emono; if v_sal<1500 then dbms_output.put_line('工资等级为一级'); elseif v_sal<3000 then dbms_output.put_line('工资等级为一级'); else dbms_output.put_line('工资等级为一级'); end if;end;/
2.LOOP简单循环(打印1-10)
set serverout ondeclare --定义循环初始值 i number(10):=0;begin loop --改变增量 i:=i+1; dbms_output.put_line(i); --循环退出条件 exit when i = 10; end loop;end;/
3.LOOP 打印偶数值
declare i number(10):=0;begin loop if mod(i,2)=0 then dbms_output.put_line(i); end if; i:i+1; exit when i = 10; end loop;end;/
4.while循环打印1-10
set serverout ondeclare i number(10):=0;begin --定义 while 循环 while i<=10 loop --循环操作 dbms_output.put_line(i); --改变循环条件 i:=i+1; end loop;end;/### 5.FOR 循环set serverout onbegin for i in 1..10 loop dbms_output.put_line(i); end loop;end;/
6.批量添加数据
-- 生成随机字符 dbms_random.string(选项,长度);-- 选项:u 表示大写字母,L表示小写字母,x表示数字和字母混合,p 任意字符-- 随机生成数字:语法1:dbms_random.value (0,1);-- dbms_random.value*num; 0到 num 的随机数-- dbms_random.value(min,max); 生成 min 到 max 随机数-- 随机数取整:round(dbms_random.value(min,max); 四舍五入 trunc(dbms_random.value(min,max); 将数字的小数部分截去
7.创建测试表
create table student( sid number(20) not null primary key, sname varchar2(20) not null, password varchar2(20) not null, sex varchar2(20) not null, phone varchar2(20));set serverout onbegin for i in 1..20 loop insert into student(sid,sname,password,sex,phone) values( 1, dbms_random.string('u',6), dbms_random.string('x',10), trunc(dbms_random.value(13000000000,18900000000)) ); commit; end loop;end;/
8.游标
set serverout ondeclare v_deptno dept.deptno%type:=&p_deptno;begin delete from emp where deptno=v_deptno; -- SQL%rowcount 记录删除的行数;如果 rowcount>0,表示已经删除员工。 if SQL%rowcount>0 then -- 再删除部门 delete from dept where deptno=v_deptno; dbms_output.put_line('部门编号为:'||v_deptno||'的部门信息已经删除!'); else -- 员工数目为空 dbms_output.put_line('部门编号为:'||v_deptno||'的员工信息已经删除!'); end if;end;/
9.显示游标,查询员工中前10条数据,分别提取 ename,sal
set serverout ondeclare -- 1.定义游标 cursor cursor_emp is select ename,sal from emp where rownum<=10; -- 定义两个变量,分别来接受游标提取两列的值 v_ename emp.ename%type; v_sal emp.sal%type;begin -- 2.打开游标 open cursor_emp; -- 3.提取游标内的第一行数据中的两类数据分别赋予两个变量 fetch cursor_emp into v_ename,v_sal; -- 4.循环打印提取游标内容,发现下一行就循环,类似 jdbc while cursor_emp%fount loop dbms_output.put_line(v_ename||'---'||v_sal); -- 改变循环条件,查看是否有下一条数据 fetch cursor_emp into v_ename,v_sal; end loop; -- 5.关闭游标 close cursor_emp;end;/
10.使用游标变量来提取部门编号为20的所有员工信息
set serverout ondeclare -- 1.定义弱类型游标 TYPE emp_cursor_type IS REF CURSOR;( 强类型 REF_CURSOR 返回的数据类型和长度在编译期就应该指明,而弱类型 REF_CURSOR 不需要。) -- 2.定义游标类型 v_cursor_emp EMP_CURSOR_TYPE; -- 3.定义游标类型变量的行记录,指的是,游标提取的一条数据中 的列数和列名和数据库类一致 v_emp_record emp%ROWTYPE;begin -- 4.打开游标 open v_cursor_emp for sleect * from emp where deptno=20; -- 5.循环提取游标内容 loop -- 5.1 提取游标内容到行记录 fetch v_cursor_emp into v_emp_record; -- 5.2 打印提取的数据 dbms_output.put_line('ename:'||v_emp_record); -- 5.3 定义循环退出条件 exit when v_cursor_emp%notfound; end loop; -- 6.关闭游标 close v_cursor_emp;end;/
11. 使用 for 循环提取游标内容
set severout ondeclare -- 1.定义游标 cursor cursor_emp is select ename,sal from emp where rownum<=10;begin -- 自动打开,提取,关闭 for i in cursor_emp loop dbms_output.put_line(i.ename||'---'||i.sal); end loop;end;/
阅读全文
0 0
- oracle 之 循环、游标
- oracle循环游标
- Oracle 游标for循环
- ORACLE游标与循环
- Oracle游标for循环
- ORACLE游标循环
- Oracle游标-提取记录、游标循环
- oracle游标:fetch和for循环游标
- 【oracle游标二】游标循环方式
- Oracle 遍历游标循环更新
- oracle 游标三种循环
- oracle 游标实现多重循环
- Oracle笔记:循环及游标
- Oracle PL/SQL显示游标、隐式游标、游标循环
- PLSQL之循环和游标
- Oracle之游标
- Oracle之游标
- oracle印象之游标
- java对redis的基本操作
- C#之各类异同
- setTimeout中this的指向,使用箭头函数后this的指向
- 页面等待窗口
- bitmap原理
- oracle 之 循环、游标
- ORA-00979 不是GROUP BY表达式
- [笔记]tarjan-无向图(桥、割点、双联通分量)
- Spring boot跨域解决方案
- 使用BigDecimal进行精确运算
- 比较两个浮点数相等
- 原生PHP上传封装类
- TP5 判断记录集是不为空
- PE中的import table/IAT 分析