Oracle学习笔记(九)
十二、PL/SQL
1、PL/SQL程序的结构和组成
示例:给员工涨工资(根据职位涨工资)
总裁涨1000
经理涨800
其他员工涨400
学习原因:1、操作数据库效率最高
2、为了后期的存储过程的学习
2、PL/SQL具体案例
set serveroutput on
----------打印Hello World
declare
-----说明部分(变量,光标或者例外)
begin
-----程序体
dbms_output.put_line('Hello World');
end;
put_line ----存储过程
查看方法
desc dbms_output
3、什么是PL/SQL程序?
(1)PL/SQL 意为过程语言的SQL
(2)PL/SQL是Oracel对sql语言的过程化扩展
--指在SQL命令语言中增加了过程处理语句(如分支、循环等),使SQL语言具有过程处理能力.
(3)PL/SQL的提出
例1、为职工长工资,每人长10%的工资
update emp set sal=sal*1.1
特点:命令式的语言
例2、按职工的职称长工资,总裁长1000元,经理长800元,其他人员长400.(此问题应用PLSQL)
SQL语言的数据操纵能力+过程语言的数据处理能力=PL/SQL
PL/SQL是面向过程的语言:但是比过程语言更加的简单、高效、灵活、实用。
不同数据库的SQL扩展:
Oracle:PL/SQL
DB2:SQL/PL
SQl Server:Transac-SQL(T-SQL)
4、PL/SQL的程序结构
declare
说明部分(变量说明、光标申明、例外说明)
begin
语句序列(DML语句)
exception
例外处理语句
end;
/
说明部分:
定义基本变量
类型:
char,varchar2,date,number,boolean,long
举例:
var1 char(15);
married boolean :=true;
psal number(7,2);
例:
--使用基本变量类型
declare
--定义基本变量类型
--基本数据类型
pnumber number(7,2);
--字符串变量
pname varchar2(20);
--日期变量
pdate date;
set serveroutput on
begin
pnumber :=1;
dbms_output.put_line(pnumber);
pname:='Tom';
dbms_output.put_line(pname);
pdate:=sysdate;
dbms_output.put_line(pdate);
--计算明天的日期
dbms_output.put_line(pdate+1);
end;
语句序列部分
说明部分:
引用型变量
举例:
my_name emp.ename%type;
--定义引用型变量:查询并打印7839的姓名和薪水
set serveroutput on
declare
pename emp.ename%type;
psal emp.sal%type;
begin
select ename, sal into pename,psal from emp where empno=7839;
--打印员工薪水
dbms_output.put_line(pename||'的薪水是'||psal);
end;
记录型变量
举例:
emp_rec emp%rowtype;
记录型变量分量的引用
emp_rec.ename:='ADAMS';
--记录型变量:查询并打印7839的姓名和薪水
set serveroutput on
declare
emp_rec emp%rowtype;
begin
select * into emp_rec from emp where empno=7839;
--打印员工薪水
dbms_output.put_line(emp_rec.ename||'的薪水是'||emp_rec.sal);
end;
begin....end中间部分,如何使用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、如何使用if语句
2、接收一个键盘输入(字符串)
set serveroutput on;
--接收一个键盘输入
--num:地址值 含义是:在该地址上保存了输入的值
accept num prompt '请输入一个数字(0或1或2)';
declare
--定义变量保存用户从键盘输入的数字
pnum number:=#
begin
--执行if语句进行条件判断
if pnum =0 then dbms_output.put_line('您输入数字是0');
elsif pnum =1 then dbms_output.put_line('您输入数字是1');
elsif pnum =1 then dbms_output.put_line('您输入数字是2');
else dbms_output.put_line('其他数字');
end if;
end;
循环语句:
(1)while循环
while total<=25000 Loop
...
total:=total+salary;
end loop;
(2)Loop循环
Loop
exit[when 条件];
....
end loop;
(3)for循环
for i in 1..3 loop
语序序列;
end loop;
事例1
--------使用while循环打印数字的1~10
set serveroutput on
declare
--定义循环变量
pnum number:=1;
begin
while pnum <=10 loop
--循环体
dbms_output.put_line(pnum);
--使该变量+1
pnum:=pnum+1;
end loop;
end;
事例2
---------使用loop循环打印数字的1~10
set serveroutput on
declare
--定义循环变量
pnum number:=1;
begin
loop
--退出条件:循环变量大于10
exit when pnum >10;
dbms_output.put_line(pnum);
--使该变量+1
pnum:=pnum+1;
end loop;
end;
事例3
---------使用for循环打印数字的1~10
declare
--定义循环变量
pnum number:=1;
begin
for pnum in 1..10 loop
dbms_output.put_line(pnum);
end loop;
end;
总结:
1、变量的定义
基本数据类型变量
引用型变量
记录型变量
2、循环和条件判断
涨工资未完成。
Oracle学习笔记(九)的更多相关文章
- Oracle学习笔记九 数据库对象
Oracle 数据库对象又称模式对象,数据库对象是逻辑结构的集合,最基本的数据库对象是表. 其他数据库对象包括:
- Oracle学习笔记三 SQL命令
SQL简介 SQL 支持下列类别的命令: 1.数据定义语言(DDL) 2.数据操纵语言(DML) 3.事务控制语言(TCL) 4.数据控制语言(DCL)
- oracle学习笔记第一天
oracle学习笔记第一天 --oracle学习的第一天 --一.几个基础的关键字 1.select select (挑选) 挑选出显示的--列--(可以多列,用“,”隔开,*表示所有列),为一条 ...
- 多线程学习笔记九之ThreadLocal
目录 多线程学习笔记九之ThreadLocal 简介 类结构 源码分析 ThreadLocalMap set(T value) get() remove() 为什么ThreadLocalMap的键是W ...
- MDX导航结构层次:《Microsoft SQL Server 2008 MDX Step by Step》学习笔记九
<Microsoft SQL Server 2008 MDX Step by Step>学习笔记九:导航结构层次 SQL Server 2008中SQL应用系列及BI笔记系列--目录索 ...
- python3.4学习笔记(九) Python GUI桌面应用开发工具选择
python3.4学习笔记(九) Python GUI桌面应用开发工具选择 Python GUI开发工具选择 - WEB开发者http://www.admin10000.com/document/96 ...
- Go语言学习笔记九: 指针
Go语言学习笔记九: 指针 指针的概念是当时学C语言时了解的.Go语言的指针感觉与C语言的没啥不同. 指针定义与使用 指针变量是保存内存地址的变量.其他变量保存的是数值,而指针变量保存的是内存地址.这 ...
- Oracle学习笔记——点滴汇总
Oracle学习笔记——点滴汇总 http://www.botangdb.com/ Oracle GI = Grid Infrastructure = ASM + Cluster
- Oracle学习笔记之四sp1,Oracle 11g的常用函数
从Oracle学习笔记之四,SQL语言入门中摘出来的,独立成一章节 3.1 字符类函数 ASCII(c)和CHR(i) 分别用于返回一个字符的ASCII码和返回给定ASCII值所对应的字符. C ...
随机推荐
- 利用OCR文字识别+百度算法搜索,玩转冲顶大会、百万英雄、芝士超人等答题赢奖金游戏
[先上一张效果图]: 一.原理: 其实原理很简单: 1.手机投屏到电脑: 2.截取投屏画面的题目部分,进行识别,得到题目和三个答案: 3.将答案按照一定的算法,进行搜索,得出推荐答案: 4.添加了一些 ...
- nginx防盗链配置
Ps:防盗链的意义就是保证自己的版权,不免网站的流量流失,为他人做嫁衣.下面是网上看到的三种方法: 修改 /usr/local/nginx/conf/nginx.conf 这个配置文件.找到locat ...
- Oracle归档日志与非归档日志的切换及路径设置
--==================== -- Oracle 归档日志 --==================== Oracle可以将联机日志文件保存到多个不同的位置,将联机日志转换为归档日志的 ...
- USACO 2016 February Contest, Gold解题报告
1.Circular Barn http://www.usaco.org/index.php?page=viewproblem2&cpid=621 贪心 #include <cstd ...
- DbUtils: JDBC Utility Component Examples
DbUtils: JDBC Utility Component Examples \JDBCCollector\jdbc\src\main\java\com\ai\toptea\collection\ ...
- 生成Excel
生成Excel 需要引用MyXls.SL2.dll的类库: 下载地址:http://sourceforge.net/projects/myxls/ 命名空间using org.in2bits.MyXl ...
- J2EE Filter中修改request内容
最近在做一个微信相关的网站,很多地方涉及到微信表情的输入,导致内容无法插入到数据库,虽然有用到一个表情过滤的工具类,但是需要过滤的地方比较多,于是想到在过滤器中过滤用户请求的内容. request这个 ...
- ES6系列_3之变量的解构赋值
ES6允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构. 解构有三种类型: 1.数组的解构赋值 (1)简单的数组解构 以前,我们给变量赋值是直接单个指定值,比如: let a=0; ...
- IIS 禁止访问:在 Web 服务器上已拒绝目录列表
webconfig <configuration> <system.webServer> <directoryBrowse enabled="true" ...
- .net 架构
.net Webservice 三层架构,BLL(业务逻辑层),DAL(数据访问层)sql语句.MODEL模型层也就是实体层Entity(数据库字段和类的定义的映射). UI层(Web/Form)界面 ...