PLSQL PPT-Les05
合集下载
《PLSQL经典教程》课件

PLSQL变量与常量
了解如何定义和使用变量以及常量,实现 数据存储和常量值的复用。
PLSQL条件语句
学习使用条件语句(IF-THEN, IF-THEN-ELSE, IF-THEN-ELSIF)控制程序的执行流程。
PLSQL循环语句
掌握使用循环语句(LOOP, WHILE, FOR) 实现重复执行某一段代码的功能。
《PLSQL经典教程》PPT课 件
本课程旨在介绍PLSQL编程的基础知识和技能。通过本课程,您将全面了解 PLSQL语言的特点和高级应用,提升自己的编程能力。
简介
本课程为PLSQL经典教程PPT课件,旨在介绍PLSQL编程基础知识和技能。
第一章:PLSQL基础
PLSQL简介
PLSQL是Oracle数据库的编程语言,具有丰 富的数据处理和逻辑控制功能。
强制执行。
结束语
感谢您的耐心学习!希望本课程能对您的PLSQL编程有所帮助。
第二章:PLSQL高级应用
1
PLSQL异常处理
学习如何编写异常处理程序以及如
PLSQL游标
2
何定义和抛出异常。
了解如何定义、使用和操作游标,
处理和管理查询结果集。来自3PLSQL存储过程
学习如何定义和使用存储过程,提
PLSQL触发器
4
高编程的模块化和代码复用性。
掌握如何定义和使用触发器,实现 数据库操作的自动化和业务规则的
第4章-使用PLSQL语言PPT课件

select * into v_dept_table(0) from dept where deptno=10; select * into v_dept_table(1) from dept where deptno=20; dbms_output.PUT_LINE('编号:'||v_dept_table(0).deptno||' 名称:'
v_emp.empno:=&no; select * into v_emp from emp where empno=v_emp.empno; dbms_output.PUT_LINE('更新前的奖金'||nvl(v_m,0)); if v_m is null then
update emp set comm=v_emp.sal*0.1 where empno=v_emp.empno; elsIf v_m<1000 then
||v_dept_table(0).dname||' 所在地:'||v_dept_table(0).loc); dbms_output.PUT_LINE('编号:'||v_dept_table(1).deptno||' 名称:'
||v_dept_table(1).dname||' 所在地:'||v_dept_table(1).loc); end;
2021/1/11
.
5
PL/SQL块
所有的PL/SQL程序都以块作为基本单位
块中包含过程化语句和SQL的DML语句。这些块可以按顺序出现 ,也可以相互嵌套(一个块在另一个块的内部)
块的分类
匿名块
匿名块是出现在应用程序中的没有名字且不存储到数据库中的块
v_emp.empno:=&no; select * into v_emp from emp where empno=v_emp.empno; dbms_output.PUT_LINE('更新前的奖金'||nvl(v_m,0)); if v_m is null then
update emp set comm=v_emp.sal*0.1 where empno=v_emp.empno; elsIf v_m<1000 then
||v_dept_table(0).dname||' 所在地:'||v_dept_table(0).loc); dbms_output.PUT_LINE('编号:'||v_dept_table(1).deptno||' 名称:'
||v_dept_table(1).dname||' 所在地:'||v_dept_table(1).loc); end;
2021/1/11
.
5
PL/SQL块
所有的PL/SQL程序都以块作为基本单位
块中包含过程化语句和SQL的DML语句。这些块可以按顺序出现 ,也可以相互嵌套(一个块在另一个块的内部)
块的分类
匿名块
匿名块是出现在应用程序中的没有名字且不存储到数据库中的块
PLSQL编程基础ppt课件

5
7.2 变量的声明与赋值
变量声明并使用变量: 变量名称可以有字母、数字、_、$、#等组成。 所有变量名称要求以字母开头,不能是Oracle中的保留字 变量的长度最多只能为30个字符 变量不区分大小写
6
7.2 变量的声明与赋值
声明变量语法: 变量名称 [CONSTANT] 类型 [not NULL] [:=value] 使用%TYPE声明变量类型: 在编写PL/SQL程序时,如果希望某一个变量与指定数据表中某 一列的类型一样,则可以采用 “变量定义”表名称.表名称%TYPE的格式
DBMS_OUTPUT.put_line('雇员:' || v_eno || '的收入为高工资。') ;
WHEN v_salary >= 2000 AND v_salary <3000 THEN
CASE语句
Case语句是一种多条件的判断语句,其功能与IF……elseif……else类似
Case语法:
Case[变量] when [值|表达式] THEN
执行语句块; when [值|表达式] THEN
执行语句块; Else
条件都不满足时执行语块; End case
22
7.4.1 分支结构
范例:使用CASE进行多条件判断
END IF;
19
7.4.1 分支结构
范例:用户输入一个雇员编号,根据它所在的部门给 上涨工资,规则:
·10部门上涨10%,20上涨20%,30上涨30%; ·但是要求最高不能超过5000,超过5000就停留在 5000。
20
7.4.1 分支结构
DECLARE
v_empSal
emp.sal%TYPE ;
7.2 变量的声明与赋值
变量声明并使用变量: 变量名称可以有字母、数字、_、$、#等组成。 所有变量名称要求以字母开头,不能是Oracle中的保留字 变量的长度最多只能为30个字符 变量不区分大小写
6
7.2 变量的声明与赋值
声明变量语法: 变量名称 [CONSTANT] 类型 [not NULL] [:=value] 使用%TYPE声明变量类型: 在编写PL/SQL程序时,如果希望某一个变量与指定数据表中某 一列的类型一样,则可以采用 “变量定义”表名称.表名称%TYPE的格式
DBMS_OUTPUT.put_line('雇员:' || v_eno || '的收入为高工资。') ;
WHEN v_salary >= 2000 AND v_salary <3000 THEN
CASE语句
Case语句是一种多条件的判断语句,其功能与IF……elseif……else类似
Case语法:
Case[变量] when [值|表达式] THEN
执行语句块; when [值|表达式] THEN
执行语句块; Else
条件都不满足时执行语块; End case
22
7.4.1 分支结构
范例:使用CASE进行多条件判断
END IF;
19
7.4.1 分支结构
范例:用户输入一个雇员编号,根据它所在的部门给 上涨工资,规则:
·10部门上涨10%,20上涨20%,30上涨30%; ·但是要求最高不能超过5000,超过5000就停留在 5000。
20
7.4.1 分支结构
DECLARE
v_empSal
emp.sal%TYPE ;
《PLSQL基础》课件

2 函数的定义和应用
掌握函数的创建和使用,以便在SQL查询中返回计算结果。
3 区别和联系
比较存储过程和函数的差异,了解它们在不同场景下的应用。
游标和触发器
1 游标的概念和用法
了解如何使用游标在PLSQL中处理查询结果集。
2 触发器的概念和应用
学习如何创建和使用触发器来自动触发数据库操作。
3 难点分析
1 条件判断语句
掌握IF-THEN、IF-THEN-ELSE和CASE语句,用于根据条件执行不同的代码块。
2 循环语句
学习FOR、WHILE和LOOP语句,以便重复执行代码块。
3 例外处理语句
了解如何处理异常情况,确保代码的可靠性和稳定性。
存储过程和函数
1 存储过程的定义和应用
学习如何创建和调用存储过程,以实现具有复杂逻辑的数据库操作。
了解在哪些场景下使用PLSQL可以极大地提升开发效率和数据处理能力。
2 知识点回顾
复习本课程的核心知识点,加深对PLSQL的理解和掌握。
3 后续学习建议
给出一些建议,帮助学员继续深入学习和应用PLSQL。
PLSQL具有高性能、可扩展性和安全性,它可以有效地处理大量数据和复杂的业务逻辑。
变量与数据类型
1 变量的定义
学习如何声明和使用变量,以存储和操作数据。
2 数据类型的分类和应用
了解各种数据类型的特性和用法,包括数字、字符、日期等类型。
3 常量的定义和应用
学习如何定义和使用常量,以存储不可变的值。
控制语句
探讨使用游标和触发器时可能遇到的常见问题和解决方法。
高级技巧
1 包的定义和使用
了解包的概念和结构,学习如何使用包来组织和管理PLSQL代码。
掌握函数的创建和使用,以便在SQL查询中返回计算结果。
3 区别和联系
比较存储过程和函数的差异,了解它们在不同场景下的应用。
游标和触发器
1 游标的概念和用法
了解如何使用游标在PLSQL中处理查询结果集。
2 触发器的概念和应用
学习如何创建和使用触发器来自动触发数据库操作。
3 难点分析
1 条件判断语句
掌握IF-THEN、IF-THEN-ELSE和CASE语句,用于根据条件执行不同的代码块。
2 循环语句
学习FOR、WHILE和LOOP语句,以便重复执行代码块。
3 例外处理语句
了解如何处理异常情况,确保代码的可靠性和稳定性。
存储过程和函数
1 存储过程的定义和应用
学习如何创建和调用存储过程,以实现具有复杂逻辑的数据库操作。
了解在哪些场景下使用PLSQL可以极大地提升开发效率和数据处理能力。
2 知识点回顾
复习本课程的核心知识点,加深对PLSQL的理解和掌握。
3 后续学习建议
给出一些建议,帮助学员继续深入学习和应用PLSQL。
PLSQL具有高性能、可扩展性和安全性,它可以有效地处理大量数据和复杂的业务逻辑。
变量与数据类型
1 变量的定义
学习如何声明和使用变量,以存储和操作数据。
2 数据类型的分类和应用
了解各种数据类型的特性和用法,包括数字、字符、日期等类型。
3 常量的定义和应用
学习如何定义和使用常量,以存储不可变的值。
控制语句
探讨使用游标和触发器时可能遇到的常见问题和解决方法。
高级技巧
1 包的定义和使用
了解包的概念和结构,学习如何使用包来组织和管理PLSQL代码。
PLSQL简介.ppt

3
内容
PL/SQL的优点 PL/SQL块基本结构 PL/SQL块声明部分 PL/SQL块可执行部分 PL/SQL注释
4
PL/SQL的优点
在通过网络执行一个SQL语句来访问Oracle数据库时,会将各个语 句都发送到服务器,进行处理,然后执行它们,向用户返回结果 (或一个消息)。每一个SQL语句都最少需要在网络中两次经过 “旅行”,一次是从用户到服务器,另一次是从服务器到用户。这 会产生大量网络数据流量。 在过程语言SQL(Procedure Language SQL,PL/SQL)程序嵌入SQL 语句是取代执行多个SQL语句的另一种方法。PL/SQL扩展了SQL的功 能。具有如下优点:
'||v_title||'is $'||v_newretail); END;
9
基本结构
分析示例: PL/SQL块的声明部分包括一个常量(c_)和三个变量(v_)。 可执行部分使用一个SELECT语句来检索两个不同列(Title和Retail) 的内容,并将这些值存储到(INTO)在声明部分指出的变量中。 注意,在SELECT子句中对Retail列执行力算术运算,以便确定这本书 的新价格。零售价将乘以存储在c_rateincrease变量(它的值实际上 是1.20或者120%)中的数量。 在将储在声明的变量中之后,就可以使用DBMS_OUTPUT程序包(DBMS_ OUTPUT.PUT_LINE)的PUT_LINE函数显示它们。与以前在SQL*Plus中执 行的SELECT命令不同,PL/SQL块在默认情况下不会显示SELECT语句的 结果。 DBMS_OUTPUT是一个包含一组函数的程序包,用户可以应用这 些函数来显示为变量指定的值。 使用DBMS_ OUTPUT.PUT_LINE显示信息之前,需要在SQL>提示符下键入 SET SERVEROUTPUT ON , SERVEROUTPUT 环境变量指出分配一个缓冲 区来存储PL/SQL块的输出。ON可以创建缓冲区。
PLSQL课件.ppt

1 PL/SQL简介
❖ SQL是属于第四代语言(4GL),其执行特点是非 过程化(描述性语言)。
❖ 然而,对于有些复杂的业务流程又要求相应的程序 来描述,那么4GL就有些无能为力了。PL/SQL的 出现正是为了解决这一问题,PL/SQL是一种过程 化语言,属于第三代语言,它与C,C++,Java等语言 一样关注于处理细节,因此可以用来实现比较复杂 的业务逻辑。
(4)可以使用Oracle数据工具管理存储在服务器中的PL/SQL 程序的安全性。可以授权或撤销数据库其他用户访问 PL/SQL程序的能力。
(5)PL/SQL代码可以使用任何ASCII文本编辑器编写,所以 对任何Oracle能够运行的操作系统都是非常便利的。
开发运行环境
❖ PL/SQL 不需要显式的安装或许可。它是 Oracle数据库的隐式部分。PL/SQL 编译器 和解释器也嵌入到多个 Oracle 工具中。
❖ Variable_name [CONSTANT] databyte [NOT NULL][:=|DEFAULT expression]
❖ v_id number; 声明变量 ❖ v_id CONSTANT NUMBER:=0 常量声明并赋值 ❖ birthdate DATE; ❖ emp_count SMALLINT DEFAULT 0; ❖ acct_id VARCHAR2(5) NOT NULL := 'AP001'; ❖ acct_id VARCHAR2(5) NOT NULL; -- 不合法,
变量赋值
❖ v_id:=5; --在程序执行部分赋值 ❖ Select a.deptno into v_dept … ❖ Fetch c1 into vname
PLSQL_Les05--包

命
令
创建一个新的包头 创建一个新的包体 修改一个已有包头 修改一个已有包体 删除包头和包体 删除包体 重新编译包头 重新编译包在一起 在一个用户的环境中解决命名的冲突问题
方便了过程和函数的管理
在不改变包头的定义是以可以改变包体的定义 限制过程的依赖性
包的规范
包规范(Package Specification),也就是“包头”,package 也就是“包头” Header, 包含了有关包的内容的信息. 但是不包含任何过程的代码.
CREATE OR REPLACE PACKAGE ClassPackage AS -- Add a new student into the specified class. PROCEDURE AddStudent(p_StudentID IN students.id%TYPE, p_Department IN classes.department%TYPE, p_Course IN classes.course%TYPE); -- Exception raised by RemoveStudent. e_StudentNotRegistered EXCEPTION; -- Table type used to hold student info. TYPE t_StudentIDTable IS TABLE OF students.id%TYPE INDEX BY BINARY_INTEGER; END ClassPackage;
包的管理
内 容
CREATE PACKAGE CREATE PACKAGE BODY CREATE OR REPLACE PACKAGE CREATE OR REPLACE PACKAGE BODY DROP PACKAGE DROP PACKAGE BODY ALTER PACKAGE package-name COMPILE PACKGAE ALTER PACKAGE package-name COMPILE PACKGAE BODY
PLSQL基础培训PPT课件

PL_SQL基础培训
PL/SQL 语言
SQL中操作符的使用
定义:操作符是保留的字或字符,主要用于比 较和算术运算。
分类:比较操作符,逻辑操作符和算术运算符。 1、比较操作符
包括:=,<>, >, <, <=, >=。 注意比较双方的数据类型。 2、算术运算符 包括:+,-,*,/等。 与数学运算规则一致。
PL/SQL 语言
PL_SQL基础培训
通过本章的学习应该掌握:
PL/SQL语言的编程规范 Oracle数据库的基本数据类型和函数 应用PL/SQL语言编写基本的sql
PL_SQL基础培训
一、PL/SQL语言编程规范 1)命名
语言---命名使用能表述对象意义的单词或者约定俗成的符号,不允 许使用中文或者特殊符号。
单词分隔---命名的各单词使用下划线进行分隔。 保留字----命名禁止使用sql保留字(可以在v$reserved_words视
图中查找所有的保留字)。 命名长度---限制在30个字符内(含前缀)。
PL_SQL基础培训
2)命名规范
普通变量---前缀为v_,存放字符、数字、日期型变量。 游标变量---前缀为cur_,存放游标记录集。 存储过程---前缀为p_,按照业务操作命名。 函数---前缀为f_,按照业务操作命名。 包---前缀为pkg_,按照业务操作集合命名。 触发器---前缀为trig_,触发器名是前缀+表名+触发器名 索引---前缀为IDX_,索引名是前缀+表名+索引字段
Sequence_of_statement1; ELSE
Sequence_of_statement2; END IF;
PL_SQL基础培训
PL/SQL 语言
SQL中操作符的使用
定义:操作符是保留的字或字符,主要用于比 较和算术运算。
分类:比较操作符,逻辑操作符和算术运算符。 1、比较操作符
包括:=,<>, >, <, <=, >=。 注意比较双方的数据类型。 2、算术运算符 包括:+,-,*,/等。 与数学运算规则一致。
PL/SQL 语言
PL_SQL基础培训
通过本章的学习应该掌握:
PL/SQL语言的编程规范 Oracle数据库的基本数据类型和函数 应用PL/SQL语言编写基本的sql
PL_SQL基础培训
一、PL/SQL语言编程规范 1)命名
语言---命名使用能表述对象意义的单词或者约定俗成的符号,不允 许使用中文或者特殊符号。
单词分隔---命名的各单词使用下划线进行分隔。 保留字----命名禁止使用sql保留字(可以在v$reserved_words视
图中查找所有的保留字)。 命名长度---限制在30个字符内(含前缀)。
PL_SQL基础培训
2)命名规范
普通变量---前缀为v_,存放字符、数字、日期型变量。 游标变量---前缀为cur_,存放游标记录集。 存储过程---前缀为p_,按照业务操作命名。 函数---前缀为f_,按照业务操作命名。 包---前缀为pkg_,按照业务操作集合命名。 触发器---前缀为trig_,触发器名是前缀+表名+触发器名 索引---前缀为IDX_,索引名是前缀+表名+索引字段
Sequence_of_statement1; ELSE
Sequence_of_statement2; END IF;
PL_SQL基础培训
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
5-7
Copyright © Oracle Corporation, 2001. All rights reserved.
Using the COUNT Function
COUNT(*) returns the number of rows in a table.
SELECT COUNT(*) FROM employees WHERE department_id = 50;
The average salary 3500 in EMPLOYEES table 6400 for each department.
10033
…
5-13
Copyright © Oracle Corporation, 2001. All rights reserved.
Creating Groups of Data: The GROUP BY Clause Syntax
SELECT AVG(NVL(commission_pct, 0)) FROM employees;
5-12
Copyright © Oracle Corporation, 2001. All rights reserved.
Creating Groups of Data
EMPLOYEES
4400 9500
Grouping by More Than One Column
EMPLOYEES
…
“Add up the salaries in the EMPLOYEES table for each job, grouped by department.
5-17
Copyright © Oracle Corporation, 2001. All rights reserved.
The GROUP BY column does not have to be in the SELECT list.
SELECT AVG(salary) FROM employees GROUP BY department_id ;
5-16
Copyright © Oracle Corporation, 2001. All rights reserved.
5-20
Copyright © Oracle Corporation, 2001. All rights reserved.
Excluding Group Results
EMPLOYEES
…
The maximum salary per department when it is greater than $10,000
SELECT COUNT(DISTINCT department_id) FROM employees;
5-10
Copyright © Oracle Corporation, 2001. All rights reserved.
Group Functions and Null Values
Group functions ignore null values in the column.
EMPLOYEES
The maximum salary in the EMPLOYEES table.
…
5-3 Copyright © Oracle Corporation, 2001. All rights reserved.
Types of Group Functions
• AVG • COUNT • MAX • MIN • STDDEV • SUM • VARIANCE
HAVING clause
5-2
Copyright © Oracle Corporation, 2001. All rights reserved.
What Are Group Functions?
Group functions operate on sets of rows to give one result per group.
5-8
Copyright © Oracle Corporation, 2001. All rights reserved.
Using the COUNT Function
• •
COUNT(expr) returns the number of rows with non-null values for the expr. Display the number of department values in the EMPLOYEES table, excluding the null values.
5-21
Copyright © Oracle Corporation, 2001. All rights reserved.
Excluding Group Results: The HAVING Clause
Use the HAVING clause to restrict groups: 1. Rows are grouped. 2. The group function is applied.
department_id, AVG(salary) employees AVG(salary) > 8000 department_id;
SELECT FROM WHERE GROUP BY
WHERE
AVG(salary) > 8000 * ERROR at line 3: ORA-00934: group function is not allowed here
SELECT FROM [WHERE [GROUP BY [ORDER BY
column, group_function(column) table condition] group_by_expression] column];
Divide rows in a table into smaller groups by using the GROUP BY clause.
• •
COUNT(DISTINCT expr) returns the number of distinct non-null values of the expr. Display the number of distinct department values in the EMPght © Oracle Corporation, 2001. All rights reserved.
Using the AVG and SUM Functions
You can use AVG and SUM for numeric data.
SELECT AVG(salary), MAX(salary), MIN(salary), SUM(salary) FROM employees WHERE job_id LIKE '%REP%';
5-19
Copyright © Oracle Corporation, 2001. All rights reserved.
Illegal Queries Using Group Functions
• • •
You cannot use the WHERE clause to restrict groups. You use the HAVING clause to restrict groups. You cannot use group functions in the WHERE clause.
5-6
Copyright © Oracle Corporation, 2001. All rights reserved.
Using the MIN and MAX Functions
You can use MIN and MAX for any data type.
SELECT MIN(hire_date), MAX(hire_date) FROM employees;
5-14
Copyright © Oracle Corporation, 2001. All rights reserved.
Using the GROUP BY Clause
All columns in the SELECT list that are not in group functions must be in the GROUP BY clause.
5-4
Copyright © Oracle Corporation, 2001. All rights reserved.
Group Functions Syntax
SELECT FROM [WHERE [GROUP BY [ORDER BY
[column,] group_function(column), ... table condition] column] column];
SELECT AVG(commission_pct) FROM employees;
5-11
Copyright © Oracle Corporation, 2001. All rights reserved.
Using the NVL Function with Group Functions
The NVL function forces group functions to include null values.
Aggregating Data Using Group Functions
Copyright © Oracle Corporation, 2001. All rights reserved.
Objectives
After completing this lesson, you should be able to do the following: