
Oracle QL/SQL 的基本语法
发布日期:2021-05-07 19:44:25
浏览次数:21
分类:精选文章
本文共 3390 字,大约阅读时间需要 11 分钟。
文章目录
一、什么是PL/SQL ?
PL/SQL(Procedure Language/SQL)
PL/SQL 是 Oracle 对 sql 语言的过程化扩展,指在 SQL 命令语言中增加了过程处理语句(如分支、循 环等),使 SQL 语言具有过程处理能力。把 SQL 语言的数据操纵能力与过程语言的数据处理能力结合 起来,使得 PLSQL 面向过程但比过程语言简单、高效、灵活和实用。范例 1: 为职工涨工资,每人涨 10%的工资。update emp set sal=sal*1.1
pl/sql 编程语言是对 sql 语言的扩展,使得 sql 语言具有过程化编程的特性。
pl/sql 编程语言比一般的过程化编程语言,更加灵活高效。 pl/sql 编程语言主要用来编写存储过程和存储函数等。二、pl/sql 程序语法
程序语法:
declare 说明部分 (变量说明, 游标申明,例外说明 〕begin 语句序列 (DML 语句〕 …exception 例外处理语句End;
1. 常量和变量定义
在程序的声明阶段可以来定义常量和变量。
- 变量的基本类型就是 oracle 中的建表时字段的变量如 char, varchar2, date, number, boolean, long
- 引用变量
- 记录型变量
---赋值操作可以使用:=也可以使用into查询语句赋值declare i number(2) := 10; s varchar2(10) := '小明'; ena emp.ename%type;---引用型变量 emprow emp%rowtype;---记录型变量begin dbms_output.put_line(i); dbms_output.put_line(s); select ename into ena from emp where empno = 7788; dbms_output.put_line(ena); select * into emprow from emp where empno = 7788; dbms_output.put_line(emprow.ename || '的工作为:' || emprow.job);end;
2. if 分支
语法 1: IF 条件 THEN 语句 1; 语句 2; END IF;语法 2: IF 条件 THEN 语句序列 1; ELSE 语句序列 2; END IF; 语法 3: IF 条件 THEN 语句; ELSIF 语句 THEN 语句; ELSE 语句 END IF;
- 范例 1:如果从控制台输入 1 则输出我是 1
- 范例 2: 如果从控制台输入 1 则输出我是 1 否则输出我不是 1
- 范例 3:判断人的不同年龄段 18 岁以下是未成年人, 18 岁以上 40 以下是成年人, 40 以上是老年人
---输入小于18的数字,输出未成年---输入大于18小于40的数字,输出中年人---输入大于40的数字,输出老年人declare i number(3) := ⅈbegin if i<18 then dbms_output.put_line('未成年'); elsif i<40 then dbms_output.put_line('中年人'); else dbms_output.put_line('老年人'); end if;end;
3. LOOP 循环语句
语法 1: WHILE total <= 25000 LOOP .. . total : = total + salary; END LOOP;语法 2: Loop EXIT [when 条件]; …… End loop 语法 3: FOR I IN 1 . . 3 LOOP 语句序列 ; END LOOP ;
- 范例:使用语法 1 输出 1 到 10 的数字
- 范例:使用语法 2 输出 1 到 10 的数字
- 范例:使用语法 3 输出 1 到 10 的数字
---用三种方式输出1到10是个数字---while循环declare i number(2) := 1;begin while i<11 loop dbms_output.put_line(i); i := i+1; end loop; end;---exit循环declare i number(2) := 1;begin loop exit when i>10; dbms_output.put_line(i); i := i+1; end loop;end;---for循环declarebegin for i in 1..10 loop dbms_output.put_line(i); end loop;end;
4. 游标 Cursor
在写 java 程序中有集合的概念,那么在 pl/sql 中也会用到多条记录,这时候我们就要用到游标,
游标可以存储查询返回的多条数据- 范例 1:使用游标方式输出 emp 表中的员工编号和姓名
- 范例 2:按员工的工种涨工资,总裁 1000 元,经理涨 800 元其,他人员涨 400 元。
--备份出一张新表为 myemp;create table myemp as select * from emp;declare cursor pc is select * from myemp; addsal myemp.sal%type; pemp myemp%rowtype;begin open pc; loop fetch pc into pemp; exit when pc%notfound; if pemp.job = 'PRESIDENT' then addsal := 1000; elsif pemp.job = 'MANAGER' then addsal := 800; else addsal := 400; end if; update myemp t set t.sal = t.sal + addsal where t.empno = pemp.empno; end loop; close pc;end;
- 范例 3:写一段 PL/SQL 程序,为部门号为 10 的员工涨工资
---游标:可以存放多个对象,多行记录。---输出emp表中所有员工的姓名declare cursor c1 is select * from emp; emprow emp%rowtype;begin open c1; loop fetch c1 into emprow; exit when c1%notfound; dbms_output.put_line(emprow.ename); end loop; close c1;end;-----给指定部门员工涨工资declare cursor c2(eno emp.deptno%type) is select empno from emp where deptno = eno; en emp.empno%type;begin open c2(10); loop fetch c2 into en; exit when c2%notfound; update emp set sal=sal+100 where empno=en; commit; end loop; close c2;end;----查询10号部门员工信息select * from emp where deptno = 10;
发表评论
最新留言
关注你微信了!
[***.104.42.241]2025年04月14日 17时50分43秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
SQL 查询强化 - 数据准备
2021-05-09
SQL 强化练习 (四)
2021-05-09
SQL 强化练习 (八)
2021-05-09
Excel 拼接为 SQL 并打包 exe
2021-05-09
Pandas数据分析从放弃到入门
2021-05-09
Matplotlib绘制漫威英雄战力图,带你飞起来!
2021-05-09
机器学习是什么
2021-05-09
《小王子》里一些后知后觉的道理
2021-05-09
《自私的基因》总结
2021-05-09
《山海经》总结
2021-05-09
《非暴力沟通》总结
2021-05-09
《你当像鸟飞往你的山》总结
2021-05-09
《我是猫》总结
2021-05-09
《抗糖化书》总结
2021-05-09
apache虚拟主机配置
2021-05-09
光盘作为yum源
2021-05-09
PHP 正则表达式资料
2021-05-09
PHP官方网站及PHP手册
2021-05-09
mcrypt加密以及解密过程
2021-05-09
mysql连续聚合
2021-05-09