十二、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学习笔记(九)的更多相关文章

  1. Oracle学习笔记九 数据库对象

    Oracle 数据库对象又称模式对象,数据库对象是逻辑结构的集合,最基本的数据库对象是表. 其他数据库对象包括:  

  2. Oracle学习笔记三 SQL命令

    SQL简介 SQL 支持下列类别的命令: 1.数据定义语言(DDL) 2.数据操纵语言(DML) 3.事务控制语言(TCL) 4.数据控制语言(DCL)  

  3. oracle学习笔记第一天

    oracle学习笔记第一天 --oracle学习的第一天 --一.几个基础的关键字   1.select select (挑选) 挑选出显示的--列--(可以多列,用“,”隔开,*表示所有列),为一条 ...

  4. 多线程学习笔记九之ThreadLocal

    目录 多线程学习笔记九之ThreadLocal 简介 类结构 源码分析 ThreadLocalMap set(T value) get() remove() 为什么ThreadLocalMap的键是W ...

  5. MDX导航结构层次:《Microsoft SQL Server 2008 MDX Step by Step》学习笔记九

    <Microsoft SQL Server 2008 MDX Step by Step>学习笔记九:导航结构层次   SQL Server 2008中SQL应用系列及BI笔记系列--目录索 ...

  6. python3.4学习笔记(九) Python GUI桌面应用开发工具选择

    python3.4学习笔记(九) Python GUI桌面应用开发工具选择 Python GUI开发工具选择 - WEB开发者http://www.admin10000.com/document/96 ...

  7. Go语言学习笔记九: 指针

    Go语言学习笔记九: 指针 指针的概念是当时学C语言时了解的.Go语言的指针感觉与C语言的没啥不同. 指针定义与使用 指针变量是保存内存地址的变量.其他变量保存的是数值,而指针变量保存的是内存地址.这 ...

  8. Oracle学习笔记——点滴汇总

    Oracle学习笔记——点滴汇总 http://www.botangdb.com/ Oracle GI = Grid Infrastructure = ASM + Cluster

  9. Oracle学习笔记之四sp1,Oracle 11g的常用函数

    从Oracle学习笔记之四,SQL语言入门中摘出来的,独立成一章节 3.1 字符类函数 ASCII(c)和CHR(i)    分别用于返回一个字符的ASCII码和返回给定ASCII值所对应的字符. C ...

随机推荐

  1. Android实现带图标的ListView

    版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/bear_huangzhen/article/details/23991119 Android实现带图 ...

  2. Am335x 下GPIO控制实例-驱动程序(转)

    看了这么多的资料,现在决定上手了,下面将用两种方式来实现对GPIO 117的控制1,用直接添加到内核的方式,实现MISC的驱动(misc_register)2,用手工安装的方式,实现简单字符设备驱动( ...

  3. 老叶观点:MySQL开发规范之我见(更新版)

    转自:http://mp.weixin.qq.com/s?__biz=MjM5NzAzMTY4NQ==&mid=207239419&idx=2&sn=bddbe0a657758 ...

  4. 黄聪:如何配置Emeditor实现代码智能识别自动完成功能

    设置方法如图所示: 效果如下图所示:

  5. Devexpres下LookUpEdit绑定数据后会默认弹出数据框的解决办法

    LookUpEdit绑定数据后会默认弹出数据框很不友好问题现象: 问题解决前的代码: lueManagement.Text = groupEntity.Name; 2 lueManagement.Ed ...

  6. word文档批量合并工具

    #NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases. ; #Warn ; En ...

  7. adb端口占用及模拟器调试

    首先在使用ADB前所有手机辅助类软件 1.CMD命令窗口输入:adb nodaemon server .然后就会提示你哪个端口被占用了. 2.输入netstat -ano | findstr &quo ...

  8. word2vec相关

    word '\xe8\xb6\x85\xe8\x87\xaa\xe7\x84\xb6\xe7\x8e\xb0\xe8\xb1\xa1' not in vocabulary 分词后的样本格式:英雄联盟, ...

  9. FDQuery sqlserver 临时表

    用FDQuery执行创建临时表,查不到临时表,用ADOQuery和BDEQuery均正常,比较发现用ADOQuery执行的时候只有SQL没有调用sql的系统存储过程sp_prepexec. 是fdqu ...

  10. C++Builder 代码编辑器 回车自动补充括弧

    两大问题 括弧和折叠 一.括弧 XE7,回车,自动补充括弧} 好用,有时候不准确,代码量多,不知道什么原因就引起错误,总是多一个括弧,一回车就加一个括弧,都不敢回车写代码了,怎么关闭此选项? 找到了, ...