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 ...
随机推荐
- sql server 多行合并一行
1. 使用函数 go CREATE FUNCTION dbo.fn_Sumtype(@type varchar(50))RETURNS varchar(8000)ASBEGIN DECLARE @va ...
- 定时器Timer&ScheduledThreadPoolExecutor
定时器Timer&ScheduledThreadPoolExecutor /** * @ClassName: TimerTest * @author: daniel.zhao * @date: ...
- python set集合运算(交集,并集,差集,对称差集)
1>交集>>> x={1,2,3,4}>>> y={3,4,5,6}>>> xset([1, 2, 3, 4])>>> y ...
- laravel Hash密码 校对
laravel加密 是使用hash不可逆的,但是可以对加密后的密码进行校对 $data = $r->all();$id = $data['id'];$user_password = bcrypt ...
- Beautiful and Powerful Correlation Tables in R
Another correlation function?! Yes, the correlation function from the psycho package. devtools::inst ...
- emacs之配置之初始目录设置
emacsConfig/dir-setting.el (setq default-directory "~/" )
- (转)SqlServer为大数据量表建索引
本文转载自:http://blog.csdn.net/iangujun/article/details/8136764 之前从没有用SqlServer数据库处理过大数据量的表,都是用Oracle,然后 ...
- Windows 远程桌面连接Ubuntu16.04图像界面
1.安装xrdp sudo apt-get install xrdp 2. 安装vnc4server sudo apt-get install vnc4server 3. 安装xubuntu-desk ...
- selenium+python自动化83-pip安装selenium报Read time out HTTPSConnectionPool(host='pypi.python.org' port443)
遇到问题 1.有些小伙伴在用pip安装selenium时候报 Read time out HTTPSConnectionPool(host='pypi.python.org' port443) 2.估 ...
- uwsgi的python2+3多版本共存实操使用virtualenv
1首先,机器需要有python2和python3的可执行环境.确保pip和pip3命令可用.原理就是在哪个环境下安装uwsgi.uwsgi启动的时候,就用的哪个python版本 2安装virtuale ...