PLSQL程序设计

合集下载

第2讲 PLSQL程序设计

第2讲 PLSQL程序设计
37
15.3 控制结构 选择结构 循环结构 跳转结构
38
15.3.1选择结构
IF语句
IF condition1 THEN statements1; [ELSIF condition2 THEN statements2;] …… [ELSE else_statements]; END IF; 注意 条件是一个布尔型变量或表达式,取值只能
数字类型 字符类型 日期/区间类型 行标识类型 布尔类型 原始类型 LOB类型 记录类型 集合类型
20
PL/SQL中常用的基本数据类型
分类
数字类型
字符类型
日期/区间类型 行标识类型
数据类型
NUMBER、BINARY_NUMBER PLS_NUMBER VARCHAR2、CHAR、LONG、
字符串比较
填充比较:通过在短字符串后添加空格,使两个字符串达到相 同长度,然后根据每个字符的ASCII码进行比较。
非填充比较:根据每个字符的ASCII码进行比较,最先结束的 字符串为小。
PL/SQL中规定,对定长的字符串(CHAR类型的字 符串和字符串常量)采用填充比较;如果比较的字符 串中有一个是变长字符串(VARCHAR2类型的字符 串),则采用非填充比较。
如果PL/SQL块相互嵌套,则在内部块中声明的变 量是局部的,只能在内部块中引用,而在外部块 中声明的变量是全局的,既可以在外部块中引用, 也可以在内部块中引用。
如果内部块与外部块中定义了同名变量,则在内 部块中引用外部块的全局变量时需要使用外部块 名进行标识。
27
<<OUTER>> DECLARE v_ename CHAR(15); v_outer NUMBER(5); BEGIN v_outer :=10; DECLARE v_ename CHAR(20); v_inner DATE; BEGIN v_inner:=sysdate; v_ename:='INNER V_ENAME'; OUTER.v_ename:='OUTER V_ENAME'; END; DBMS_OUTPUT.PUT_LINE(v_ename); END;

PLSQL程序设计

PLSQL程序设计
通过PL/SQL编写的存储过程和触发器可以 用于实现数据访问控制,确保数据的安全性量数据类型
包括数值型(如NUMBER)、字符型(如VARCHAR2)、 日期型(如DATE)等。
01
集合数据类型
包括表、数组和集合,用于存储多个值。
02
03
自定义数据类型
使用COMMIT语句可以提交事务,将所有未提交的更改永久保存到数据库中。
感谢您的观看
THANKS
循环读取
使用循环结构(如WHILE循环)逐行读取游标中的数据。
异常处理
在读取游标数据时,应处理可能出现的异常,以确保程序的健壮 性。
游标的关闭
关闭游标
使用CLOSE语句关闭游标,释放与 游标相关的资源。
清理资源
关闭游标后,应释放所有与游标相关 的变量和资源,以避免内存泄漏。
06
PL/SQL事务处理
BEFORE触发器
在指定的事件(如INSERT、UPDATE或DELETE)之前执行的操作。
AFTER触发器
在指定的事件之后执行的操作。
INSTEAD OF触发器
用于视图,当对视图进行修改操作时,触发器中的操作替代了原本 的修改操作。
触发器的应用场景
数据完整性维护
触发器可用于确保数据的完整性,例如, 在更新员工工资时自动计算并更新员工
的总收入。
条件约束
触发器可用于实现复杂的业务规则, 例如,限制某些用户不能删除其他用
户的记录。
自动日志记录
触发器可以在数据修改时自动记录操 作日志,便于跟踪数据变更历史。
数据转换
触发器可以在数据修改时自动进行数 据转换或格式化,例如,将日期字段 自动转换为特定的格式。
05

PLSQL程序设计

PLSQL程序设计
CREATE OR REPLACE PROCEDURE return_deptinfo( p_deptno emp.deptno%TYPE, p_avgsal OUT emp.sal%TYPE, p_count OUT emp.sal%TYPE) AS BEGIN SELECT avg(sal),count(*) INTO p_avgsal,p_count FROM emp WHERE deptno=p_deptno; EXCEPTION WHEN NO_DATA_FOUND THEN DBMS_OUTPUT.PUT_LINE('The department don’’t exists!'); END return_deptinfo;
5
Oracle10g 数据库基础教程

参数说明

参数的模式



IN(默认参数模式)表示当过程被调用时,实参值被传递给形 参;在过程内,形参起常量作用,只能读该参数,而不能修改 该参数;当子程序调用结束返回调用环境时,实参没有被改变。 IN模式参数可以是常量或表达式。 OUT表示当过程被调用时,实参值被忽略;在过程内,形参起 未初始化的PL/SQL变量的作用,初始值为NULL,可以进行 读/写操作;当子程序调用结束后返回调用环境时,形参值被 赋给实参。OUT模式参数只能是变量,不能是常量或表达式。 IN OUT表示当过程被调用时,实参值被传递给形参;在过程 内,形参起已初始化的PL/SQL变量的作用,可读可写;当子 程序调用结束返回调用环境时,形参值被赋给实参。IN OUT 模式参数只能是变量,不能是常量或表达式。 6
10




Oracle10g 数据库基础教程
(2)存储过程的调用

PL SQL 程序设计

PL SQL 程序设计

使用 SELECT INTO 进行赋值
还可以按如下方法使用 SELECT INTO 对变量赋值
SELECT <列名> INTO <变量名> FROM <表名> WHERE <条件>;
示例
SELECT first_fare INTO oldfare FROM fare WHERE route_code = ‘SAN-LOU’;

PL/SQL中的逻辑操作符
operator AND operation 两个条件都必须满足
OR
NOT
只要满足两个条件中的一个
取反
注释的使用
添加注释可以提高程序的可读性并帮助
理解
PL/SQL 支持两种注释样式

单行注释
可以在行中的任何地方以双分号 (--) 开始 可以扩展到行尾

多行注释
PL/SQL 结构
一个标准 PL/SQL 代码段称作程序块 一个程序块是由三个部分或节构成的

声明部分
可执行部分


异常处理部分
PL/SQL 结构
DECLARE 声明 BEGIN 可执行语句 EXCEPTION 例外处理程序 END; PL/SQL 程序块的一部分
PL/SQL 结构
声明部分
操作符
与其他程序设计语言相同,PL/SQL有一系列操 作符。操作符分为下面几类: 1)算术操作符 2)关系操作符 3)比较操作符 4)逻辑操作符
PL/SQL中的算术操作符如下表
operator operation 加 减 除 乘
+ / *
**
乘方
PL/SQL中的关系操作符

PLSQL编程语言的使用与程序设计

PLSQL编程语言的使用与程序设计

实验五 PL/SQL编程语言的使用与程序设计【开发语言及实现平台或实验环境】Oracle10g【实验目的】(1)了解PL/SQL在Oracle中的基本概念;(2)掌握PL/SQL的各组成部分;(3)PL/SQL的运用。

【实验原理】1.PL/SQL字符集和所有其他程序设计语言一样,PL/SQL也有一字符集。

读者能从键盘上输入的字符集是PL/SQL的字符。

此外,在某些场合,还有使用某些字符的规定。

我们将要详细介绍:● 用PL/SQL编程时可能使用的字符● 算术运算符● 关系运算符● 杂符号1)合法字符用PL/SQL程序时,允许使用下列字符:● 所有大、小写字母● 数字0到9● 符号:()+-*/〈〉=!~;:.‘@ %,“# $ ^ & _ | { } ? [ ]2)算术运算符下面列出了PL/SQL中常用的算术运算符。

如果读者使用过其他高级程序设计语言,想必不会陌生:表6 算术运算符运算符意义+ 加法- 减法* 乘法/ 除法** 幂关系运算符下面列出了PL/SQL中常用的关系运算符。

如果读者有使用其他程序设计语言的经验,一定见过这些符号:表7 关系运算符运算符意义<> 不等于!= 不等于^= 不等于< 小于> 大于= 等于3)杂符号PL/SQL为支持编程,还使用下述符号。

下面列出了部分符号,它们是最常用的,也是使用PL/SQL的所有读者都必须了解的。

表8 杂符号4)变量变量是PL/SQL中用来处理数据项所用的名字。

读者根据下列规则选择变量名称:● 变量必须以字母(A~Z)开头。

● 其后跟可选的一个或多个字母,数字(0~9)或特殊字符$、# 或_。

● 变量长度不超过30个字符。

● 变量名中不能有空格。

5)保留字保留字可视为PL/SQL版权所有的字符串。

在定义变量名时,读者不能使用这些保留字。

例如,词“loop”在PL/SQL中有特殊含义,因此下列代码是非法的:declareemployee varchar2(30);loop number;保留字不能用作变量名。

Les12_PLSQL程序设计

Les12_PLSQL程序设计



when others then 具体处理
Oracle的异常处理

系统定义例外
No_data_found Too_many_rows Zero_Divide Value_error (没有找到数据) (select …into语句匹配多个行) ( 被零除) (算术或转换错误) (在等待资源时发生超时)
Timeout_on_resource

用户定义的例外

演示:系统定义例外(被0除 Zero_Divide)
用户定义例外及处理例外

在declare节中定义例外
out_of exception ;

在可行语句中引起例外
raise out_of ;

在Exception节处理例外
when Out_of then …
赋值语句

var1:='this is a argument'; emp_rec.sal: = sal *2 + nvl(comm, 0); sum_sal:=sum_sal+v_sal; FETCH c1 INTO e_eno , e_sal ;

COMMIT语句

结束当前事务, 使当前事务所执行的全部修改永久化。
3. IF 条件 THEN 语句;
ELSIF 语句 THEN 语句; ELSE 语句;
END IF;
IF语句示例:

判断用户输入的数字,打印相关信息
按1:查询套餐流量,2:查询话费信息,其他:人工客服

提示:
从键盘输入: accept num prompt '请输入一个数字'; 得到键盘输入的值: pnum number := &num;

第13章 PLSQL程序设计

第13章 PLSQL程序设计
第13章 PL/SQL程序设计
内容提要
pl/sql 过程化的语言进行程序设计的基础 知识。
13.1 PL/SQL 基础知识

PL/SQL是过程化语言/sql的缩写,是 Oracle在SQL的基础上扩展开发的一种数 据库编程语言,在兼容标准SQL的基础上, 扩充了许多新的功能,是面向过程化的 语言与SQL语言的结合,特点如下:


(1) PL/SQL除了基本的SQL语句之外,还 包括了控制结构和异常处理,从而具有 SQL语言的简洁性和过程化的灵活性。 (2) 每个SQL语句的处理请求都将引起一 次网络传输,容易导致网络拥塞。而 PL/SQL是以整个语句块发给服务器的, 从而减少了网络通信流量,提高了应用 程序的执行速度。

(5) PL/SQL 是一种块结构语言,即构成 一个PL/SQL程序的基本单位是块。
13.1.1 PL/SQL块

1.基本结构 PL/SQL程序的基本单位是块,块分匿名 块、命名块两种。匿名块指未命名的块, 只能执行一次,不能存储在数据库中。 命名块指过程、函数、触发器和包等数 据库对象,它们存储在数据库中,可以 被多次调用执行。

匿名块的基本结构: [DECLARE] BEGIN [EXCEPTION] END;

以被命名和存储在Oracle 服务器中,同时也能被其他的PL/SQL程 序或SQL语句调用,任何客户、服务器工 具都能访问PL/SQL程序,具有很好的可 重用性。

(4)通过授予用户执行PL/SQL块的权限, 而不是直接授予用户对数据库对象的操 作权限,提供了数据库的安全性。

第10章 PL-SQL程序设计

第10章 PL-SQL程序设计

游标的属性操作

游标属性用来获取游标状态。 游标属性用来获取游标状态。
名 称 %ISOPEN %FOUND %NOTFOUND %ROWCOUNT 说 明 逻辑值, 游标是否打开。 逻辑值 , 游标是否打开 。 如游标未打开其值为 False,反之为True。 ,反之为 。 逻辑值,游标是否找到一条记录。如游标找到记 逻辑值,游标是否找到一条记录。 录其值为True,反之为 录其值为 ,反之为False。 。 逻辑值, 游标没有找到记录, 逻辑值 , 游标没有找到记录 , 是 %FOUND属性 属性 的逻辑非。 的逻辑非。 返回提取游标记录的行数。 返回提取游标记录的行数。
%TYPE、记录和%ROWTYPE类型 、记录和 类型
• • • •
%TYPE类型:使一个变量与字段的数据类型保持一致 类型: 类型 当数据库表中的字段类型修改后, 。当数据库表中的字段类型修改后,PL/SQL程序中相 程序中相 应变量的类型也随之改变。 应变量的类型也随之改变。 记录类型:是用户自定义的数据类型, 记录类型:是用户自定义的数据类型,记录类型包含 一个或多个相关字段, 一个或多个相关字段,即字段包含的类型可以是不相 同的。通常记录类型用于保存表中记录的变量内容。 同的。通常记录类型用于保存表中记录的变量内容。 %ROWTYPE类型:可以完整的存放数据库表中的整 类型: 类型 行记录, 行记录,并可以使用游标或者游标变量来获取记录中 的数据。 的数据。 表类型( 表类型(略) 示例
本章要学习的内容
• • • • • • • •
PL/SQL语言基础 语言基础 PL/SQL控制结构 控制结构 PL/SQL记录和表 记录和表 游标 过程和函数 触发器 包 异常处理
PL/SQL语言基础 语言基础

PL/SQL程序设计

PL/SQL程序设计

PL/SQL程序设计PL/SQL是一种数据库编程语言,广泛应用于Oracle数据库管理系统中。

它是SQL的一种扩展,添加了过程性编程的特性,允许开发者创建更复杂、可重用的程序逻辑。

PL/SQL程序设计可以分为以下几个方面:1.PL/SQL的基本概念:PL/SQL是过程性语言和SQL结构的结合。

它使用块的概念,一个块由一个可选的声明部分、一个执行部分和一个可选的异常处理部分组成。

PL/SQL程序可以包含变量、常量、游标和异常处理等元素。

2.变量和数据类型:在PL/SQL中,可以通过声明变量来存储和操作数据。

PL/SQL中支持多种数据类型,包括基本的整型、字符型、日期型等,还可以自定义记录类型和表类型。

使用变量可以在程序中存储临时数据,进行运算和逻辑判断。

3.控制结构:PL/SQL支持多种控制结构,包括条件语句、循环语句和异常处理语句。

条件语句可以根据一些条件来执行不同的操作。

循环语句可以重复执行一段代码,直到满足退出条件为止。

异常处理语句用于捕获和处理运行时错误,保证程序的健壮性。

4.子程序:PL/SQL中的子程序可以是存储过程、函数或触发器。

存储过程是一段可重用的代码块,它可以在数据库中存储和调用。

函数是一个具有返回值的子程序,可以在SQL语句中使用。

触发器是与表相关联的特殊存储过程,当满足特定的条件时自动触发。

5.游标和异常处理:PL/SQL中的游标用于处理查询结果集。

游标可以使用循环语句来遍历结果集,并进行相应的操作。

异常处理是PL/SQL的一大特点,它可以有效地捕获和处理运行时错误。

在异常处理部分,可以指定对应不同类型错误的处理方式,例如日志记录、回滚事务等。

6.包和包体:PL/SQL中的包是一种逻辑上的封装,它可以包含变量、常量、游标和子程序等。

包体是包的实现部分,声明和定义了包中的各个元素。

使用包可以将相关的数据和逻辑组织在一起,提供更好的可维护性和可重用性。

7.异常处理和日志记录:在实际的PL/SQL开发中,异常处理是非常重要的。

PLSQL程序设计(基础篇)

PLSQL程序设计(基础篇)
按照形式,可分为命名的PL/SQL和匿名的PL/SQL,其中,命名的,又可以分为子程序和触发器,而子程序又可以分为包、函数、过程。是不是有点儿 ?不过不要紧,等你看过整个文章,再回来看就是很简单了。
PL/SQL的基本结构如下:
Declare
在这里可以定义变量、常量、异常等。
Begin
在这儿可以写一些执行SQL或PL/SQL语句。
源码:
说明:源码都是由PL/SQL Developer 8开发,于Oracle10g测试
-- Created on 2010-4-27 by Quasar
/*
这就是
你的第一个程序了,也是我的,哈哈
*/
declare
msg varchar2(15);--定义变量
begin
msg := 'Hello World';--赋值
from emp left outer join dept-- 1确定表
using(deptno)
where deptno > 0-- 2确定行(记录)
group by dname-- 3将行分组
having max(comm) is null or max(comm) > 0-- 4对组筛选
order by dname-- 6对结果集排序
dbms_output.put_line('Oracle第一个员工的信息:');
dbms_output.put_line('员工号:'||eno);
dbms_output.put_line('员工姓名:'||empname);
dbms_output.put_line('职位:'||empjob);

PLSQL程序设计主要内容PLS...

PLSQL程序设计主要内容PLS...

PL/SQL程序设计主要内容:PL/SQL 语言的基本特征、PL/SQL程序的结构、PL/SQL语言的控制结构、游标(cursor)编程、错误处理、存储过程和函数、创建包(Package)、触发器(Trigger)。

第一章PL/SQL 语言的基本特征1. 什么是PL/SQL?PL/SQL是Procedure Language & Structured Query Language 的缩写。

SQL SERVER:Transaction-SQL。

PL/SQL 可分为两种:数据库PL/SQL和工具PL/SQL。

两者的编程非常相似。

都具有编程结构、语法和逻辑机制。

主要介绍数据库PL/SQL内容。

工具PL/SQL用于Oracle的客户端开发工具。

工具PL/SQL另外还增加了用于支持工具(如ORACLE Forms)的句法,如:在窗体上设置按钮等。

Oracle的客户端开发工具Oracle iDS(Developer Studio)Release 2 (10.2)包括的软件:Oracle10g JDeveloper -JAVA开发工具Oracle10g Forms Developer -窗体开发Oracle10g Designer -数据库工具Oracle10g Software Configuration Manager -软件配置Oracle10g Reports Developer -报表开发Oracle10g Discoverer AdministratorOracle10g Warehouse Builder -数据仓库Oracle10g Business Intelligence Beans -商业智能2. PL/SQL 语言的特征支持SQL语言、支持面向对象编程、可移植、与Oracle集成。

PL/SQL程序不区分大小写。

字符串数据区分大小写。

3. PL/SQL 可用的SQL语句在PL/SQL中可以使用的SQL语句有:INSERT,UPDATE,DELETE,SELECT INTO,COMMIT,ROLLBACK,SAVEPOINT。

Chapter 06_PLSQL程序设计

Chapter 06_PLSQL程序设计

– 请看案例6
使用%rowtype属性定义记录型变量 – 使用%type可以使变量获得字段的数据类型,使用 %rowtype可以使变量获得整个记录的数据类型。该属性 可以基于表或视图定义记录变量。为了简化表或视图所 有列数据的处理,应该使用该属性定义记录变量。
存储过程
• 与其它的数据库系统一样,Oracle的存储过程是用PL/SQL语 言编写的能完成一定处理功能的存储在数据库字典中的程序。 – 创建过程语法: CREATE [OR REPLACE] PROCEDURE 过程名 [ (参数名 [ { IN | IN OUT }] 数据类型„.)] { IS | AS } PL/SQL块 请看案例7:创建一个存储过程sp_pro1 ,用于实现向 mytest表中添加数据 先创建一张mytest表create table mytest(id number);
• FOR循环 – 格式: FOR 循环控制变量 IN [ REVERSE ] 下界值..上界 值 LOOP statement1; statement2; END LOOP; – 当使用FOR循环时,每次循环时循环控制变量会自动 增一;如果指定REVERSE选项,那么每次循环时循环控 制变量会自动减一。 – 案例17:将案例15使用for循环实现
• 建立OUT参数的存储过程 – 过程不仅可以用来执行特定操作,而且也可以用于输出 数据,在过程中输出数据是使用OUT参数来完成的,当 定义输出参数时,必须提供OUT关键字。 – 请看下面的案例,利用in和out参数传递的方式调用一 个存储过程 【案例9】创建一个过程,从emp表中带入雇员的姓名, 返回该雇员的薪水值。(out参数,然后调用过程,请 同学们先编写这个过程
DECODE()函数 和case表达式类似,decode()函数也用于实现多路分支结构 select empno, ename, sal, decode(deptno, 10, '财务部', 20, '研发部', 30, '销售部', '未知部门') 部门 from emp;

第16章 PLSQL程序设计2

第16章 PLSQL程序设计2
oracle10g数据库基础教程200925检索游标语法格式fetchcursorname说明在使用fetch语句之前必须先打开游标对游标第一次使用fetch语句时游标指针指向第一条记录因此操作的对象是第一条记录使用后游标指针指向下一条记录
Oracle10g 数据库基础教程
第16章 PL/SQL程序设计


18
2009
Oracle10g 数据库基础教程
16.3.3跳转结构
语法格式:
《标号》
… GOTO 标号;
说明:
块内可以跳转,内层块可以跳到外层块,但外层块不
能跳到内层。 IF语句不能跳入。不能从循环体外跳入循环体内。不 能从子程序外部跳到子程序中。 由于goto语句的缺点,建议尽量少用甚至不用goto语 句。
Oracle10g 数据库基础教程

DECLARE v_deptno emp.deptno%TYPE; CURSOR c_emp IS SELECT * FROM emp WHERE deptno=v_deptno; v_emp c_emp%ROWTYPE; BEGIN v_deptno:=&x; OPEN c_emp; LOOP FETCH c_emp INTO v_emp; EXIT WHEN c_emp%NOTFOUND; DBMS_OUTPUT.PUT_LINE(v_emp.empno||' '|| v_emp.ename||' '|| v_emp.sal ||' '|| v_deptno); END LOOP; CLOSE c_emp; END;
1
2009
Oracle10g 数据库基础教程

PLSQL编程语言的使用与程序设计

PLSQL编程语言的使用与程序设计

实验五PL/SQL编程语言的使用与程序设计【开发语言及实现平台或实验环境】Oracle10g【实验目的】(1)了解PL/SQL在Oracle中的基本概念;(2)掌握PL/SQL的各组成部分;(3)PL/SQL的运用。

【实验原理】1.PL/SQL字符集和所有其他程序设计语言一样,PL/SQL也有一字符集。

读者能从键盘上输入的字符集是PL/SQL的字符。

此外,在某些场合,还有使用某些字符的规定。

我们将要详细介绍:●用PL/SQL编程时可能使用的字符●算术运算符●关系运算符●杂符号1)合法字符用PL/SQL程序时,允许使用下列字符:●所有大、小写字母●数字0到9●符号:()+-*/〈〉=!~;:.‘@ %,“# $ ^ & _ | { } ?[ ]2)算术运算符下面列出了PL/SQL中常用的算术运算符。

如果读者使用过其他高级程序设计语言,想必不会陌生:表6 算术运算符运算符意义+ 加法- 减法* 乘法/ 除法** 幂关系运算符下面列出了PL/SQL中常用的关系运算符。

如果读者有使用其他程序设计语言的经验,一定见过这些符号:表7 关系运算符运算符意义<> 不等于!= 不等于^= 不等于< 小于> 大于= 等于3)杂符号PL/SQL为支持编程,还使用下述符号。

下面列出了部分符号,它们是最常用的,也是使用PL/SQL的所有读者都必须了解的。

表8 杂符号4)变量变量是PL/SQL中用来处理数据项所用的名字。

读者根据下列规则选择变量名称:●变量必须以字母(A~Z)开头。

●其后跟可选的一个或多个字母,数字(0~9)或特殊字符$、# 或_。

●变量长度不超过30个字符。

●变量名中不能有空格。

5)保留字保留字可视为PL/SQL版权所有的字符串。

在定义变量名时,读者不能使用这些保留字。

例如,词“loop”在PL/SQL中有特殊含义,因此下列代码是非法的:declareemployee varchar2(30);loop number;保留字不能用作变量名。

plsql课程设计

plsql课程设计

pl sql课程设计一、课程目标知识目标:1. 理解PL/SQL基本概念,掌握其作为Oracle数据库编程语言的特点及应用场景。

2. 学会基本的PL/SQL语法结构,包括变量声明、数据类型、控制结构(IF、LOOP、CASE)和异常处理。

3. 掌握使用PL/SQL编写存储过程、函数和触发器,并能应用于实际数据库设计和维护中。

技能目标:1. 能够运用PL/SQL编写简单的程序,进行基本的数据库操作。

2. 能够独立创建存储过程、函数和触发器,实现对数据库的复杂操作和事务控制。

3. 能够通过调试和优化PL/SQL代码,提高程序的性能和可维护性。

情感态度价值观目标:1. 培养学生对数据库编程的兴趣,激发其探索数据库技术的热情。

2. 培养学生团队协作意识,学会在项目中与他人共同解决问题,共同进步。

3. 培养学生严谨、踏实的编程态度,养成良好的编程习惯和代码规范。

课程性质:本课程为高年级数据库编程课程,以实践为主,理论联系实际,注重培养学生的动手能力和实际应用能力。

学生特点:学生具备一定的数据库基础,了解SQL语言,对编程有一定的兴趣和基础。

教学要求:教师应采用案例教学法,结合实际项目案例进行教学,引导学生主动参与,注重实践操作,提高学生的编程技能和应用能力。

同时,关注学生个体差异,给予个性化指导,确保每位学生都能达到课程目标。

通过课程学习,使学生能够独立完成PL/SQL编程任务,为后续从事数据库相关工作和进一步学习打下坚实基础。

二、教学内容1. PL/SQL基础概念:介绍PL/SQL的特点、作用及其在Oracle数据库中的应用。

- 章节关联:课本第1章“PL/SQL基础”- 内容列举:PL/SQL块结构、变量声明、数据类型、运算符、表达式。

2. 控制结构:讲解如何使用IF、LOOP、CASE等控制结构进行逻辑判断和循环操作。

- 章节关联:课本第2章“控制结构”- 内容列举:条件判断、循环控制、分支选择。

3. 异常处理:学习如何处理程序中可能出现的错误和异常情况。

PLSQL程序设计培训教程

PLSQL程序设计培训教程

1-17
• • • • • •
规则3 规则 每个if语句有且只有一个 每个 语句有且只有一个else。 语句有且只有一个 。 规则4 规则 Else语句行后面不跟语句结束符。 语句行后面不跟语句结束符。 语句行后面不跟语句结束符 3 if-then-elsif 这种结构用于替代嵌套if-then-else结构。例子如 结构。 这种结构用于替代嵌套 结构 下页所示。 下页所示。
1-18
• • • • • • • • •
1-19
If var1>var2 then DBMS_OUTPUT.put_line(‘var1 is larger than var2’); elsif var1=var2 then DBMS_OUTPUT.put_line(‘var1 is equal to var2’); else DBMS_OUTPUT.put_line(‘var1 is smaller than var2’); End if; 规则5 规则 elsif无匹配的 无匹配的end if。 无匹配的 。

DBMS_OUTPUT.put_line(‘Radius=’ || TO_CHAR(radius) || ‘,Circumference= ‘ || TO_CHAR(Circumference) || ‘,Area= ‘ || TO_CHAR(Area)); END;

1-9

显示了PL/SQL引擎在 引擎在Oracle服务器中的位置 图5.2显示了 显示了 引擎在 服务器中的位置
1-4
• • • • • • • • • •
1-5
5.1.2 数据类型 BINARY_INTEGER NUMBER(精度 比例 精度,比例 精度 比例) CHAR(长度 长度) 长度 VARCHAR2(长度 长度) 长度 DATE ROWID 存储数据库表中每一行的物理地址 UROWID 存储数据库表中每一行物理的、逻辑的 存储数据库表中每一行物理的、 或外部的( 或外部的(非Oracle的)地址 的 BOOLEAN

PLSQL程序设计

PLSQL程序设计

PLSQL程序设计PL/SQL(Procedural Language/Structured Query Language)是一种编程语言,被广泛用于Oracle数据库管理系统中。

它结合了SQL的优势和过程化编程的能力,允许开发人员编写复杂的程序来处理和管理数据。

PL/SQL的程序设计主要包括声明变量、控制结构、循环语句、异常处理和存储过程等。

首先,PL/SQL允许开发人员在程序中声明变量,这些变量可以存储数据,以供程序使用。

在声明变量之后,可以对其进行赋值和引用。

PL/SQL支持多种数据类型,包括数字、字符、日期和布尔值等。

其次,PL/SQL提供了控制结构,可以根据不同的条件来执行不同的代码块。

常用的控制结构包括条件语句(IF-THEN-ELSE)、CASE语句和循环语句(FOR、WHILE)。

这些结构使得开发人员可以根据需要来控制程序的执行流程。

异常处理是PL/SQL的一个重要特性。

通过使用TRY-CATCH块,可以捕捉和处理程序中可能发生的异常。

开发人员可以定义自己的异常,并根据需要采取适当的措施来处理异常,例如记录日志、回滚事务等。

存储过程是PL/SQL的一个重要组成部分。

它允许开发人员将一组SQL语句封装为一个可重复使用的块,并且可以在数据库中进行存储,以便其他程序可以调用。

存储过程在提高性能、简化复杂操作和增强数据安全性方面具有广泛的应用。

此外,PL/SQL还提供了许多其他功能,如游标(用于处理查询结果集)、函数(用于返回单个值)和触发器(用于在数据发生变化时执行相应的操作)等。

这些功能使得开发人员可以更高效地处理和管理数据。

总结起来,PL/SQL是一种强大的程序设计语言,适用于处理和管理Oracle数据库中的数据。

它结合了SQL的优势和过程化编程的能力,在开发数据库应用程序时具有很大的优势。

通过灵活运用PL/SQL的各种功能,开发人员可以编写高效、可靠和安全的程序。

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。


例一
DECLARE tin_rec tin % rowtype ; v_passwd userlog.passwd % type ; errps EXCEPTION ;
BEGIN select * into tin_rec from tin ; select passwd into v_passwd from userlog
WHILE e LOOP
END LOOP ;
FOR i IN 1..10 LOOP
END IF;
END LOOP ;
EXIT [WHEN e] ;例外EXCEPTION WHEN 例外名1 THEN
… WHEN 例外名2 THEN
…… WHEN OTHERS THEN
…… END ;
系统预定义例外
begin
例三
For r1 in c1 loop
i := 0 ; for r2 in c2(r1.kno) loop
i := i + 1 ; if i=1 then
insert into tout values(r2.kno,r2.pno,r2.pdate); l_d:=r2.pdate; elsif r2.pdate = l_d then insert into tout values(r2.kno, r2.pno,r2.pdate); else exit; end if ; end loop; end loop ;
例三
Declare cursor c1 is select distinct kno from clog; cursor c2 (kindno char(3)) is select * from clog where kno=kindno order by day desc ; i number ; l_d date ;
open c1(v_depno) ;
例三
例题: 收发室收文件。文件分类,每类中文件依收到 日期先后顺序编号。值班人员收到文件后,要 在系统中登录文件类别,编号,收到日期。
(注:一天中收到的文件可能不止一份) 编一PL/SQL 程序,查询每一类中最后一天收
到的文件) 表clog(kno 类别 , pno 编号 , pdate 收发日期) 练习要点: 光标FOR循环,带参数的光标
where userid = tin_rec.ud ;
例一
if tin_rec.ps = v_passwd then insert into tout values(`login ok` );
else raise errps ;
end if ; exception when errps then
insert into tout values(`password error`〕; when no_data_found then insert into tout values(`userid error’〕; end;
例二
Close c1; insert into msg values(emp_num , s_sal) ; commit ; end;
光标for循环
For r in c1 loop
r.sal end loop;
如何打开光标 如何读光标区 如何判断读完 如何关闭光标
带参数光标
cursor c1 (depno char(3)) is select * from emp where dno=depno ;
显式光标
定义 delcare cursor c1 is select …
打开 open c1 读 fetch c1 into 变量/记录 close c1
显式光标
读取状态信息 c1%found c1%rowcound
用光标定义记录 temp c1%rowtype
例二
问题:
为职工长工资。从最低工资长,工资总额限 制在50万元。 Declare
二、PL/SQL程序设计
什么是PL/SQL
对SQL的扩充 过程化 后台技术
PL/SQL 程序结构
Declare begin
exception end /
变量类型
v_ename char(10) ; married boolean :=true ; v_ename emp.ename %TYPE ;
dup_val_on_index no_data_found too_many_rows
Select * into …
用户自定义例外
例外名定义 ex1 exception ;
引起例外 raise ex1 ;
例一
用户注册检查
tin : Ud
ps
tout :
msg
userlog : Userid passwd
光标
Oracle 使用Private SQL Area的工作区 执行SQL语句,并保存语句执行结果和 相关的状态信息。
光标是一个PL/SQL结构,利用光标可以 命名这些工作区,并通过光标访问工作 区中的信息。
隐式光标
隐式光标名:SQL 访问: SQL%ROWCOUNT SQL%FOUND SQL%NOTFOUND
cursor c1 is select eno,sal from emp order by sal for update of sal ;
emp_num number :=0 ; s_sal number ; e_sal number ; e_eno char(3);
例二
Begin open c1; select sum(sal) into s_sal from emp ; while s_sal<500000 loop fetch c1 into e_eno,e_sal ; exit when c1%notfound ; update emp set sal=sal*1.1 wwhheerereceunrroe=net_oefnco1 ;; s_sal:=s_sal + e_sal*0.1; emp_num:=emp_num+1 ; end loop ;
emp_rec emp % ROWTYPE ;
变量赋值 an_sal :=mon_sal *12 + nvl(comm,0) ;
Select ename INTO v_ename from emp where eno=` e01 ` ;
程序控制结构
IF e1 THEN ELSIF e2 THEN ELSIF e3 THEN ELSE
相关文档
最新文档