《Oracle数据库应用与开发》第05章[PLSQL]理论课
Oracle PL SQL 编程手册(SQL大全)

Oracle PL/SQL 编程手册(SQL大全) 一、SQL PLUS1引言SQL命令以下17个是作为语句开头的关键字:alter drop revokeaudit grant rollback*mit*insert selectment lock updatecreate noaudit validatedelete rename这些命令必须以“;”结尾带*命令句尾不必加分号,并且不存入SQL缓存区。
SQL中没有的SQL*PLUS命令这些命令不存入SQL缓存区define pause#del quit$describe remark/disconnect runaccept document saveappend edit setbreak exit showbtitle get spoolchange help sqlplusclear host startcolumn input timingpute list ttitleconnect newpage undefinecopy---------2数据库查询数据字典TAB用户创建的所有基表、视图和同义词清单DTAB构成数据字典的所有表COL用户创建的基表的所有列定义的清单CATALOG用户可存取的所有基表清单select*from tab;describe命令描述基表的结构信息describe deptselect*from emp;select empno,ename,jobfrom emp;select*from deptorder by deptno desc;逻辑运算符=!=或<>>>=<<=inbetween value1and value2like%_in nullnotno in,is not null谓词in和not in有哪些职员和分析员select ename,jobfrom empwhere job in('clerk','analyst');select ename,jobfrom empwhere job not in('clerk','analyst');谓词between和not between哪些雇员的工资在2000和3000之间select ename,job,sal from empwhere sal between2000and3000;select ename,job,sal from empwhere sal not between2000and3000;谓词like,not likeselect ename,deptno from empwhere ename like'S%';(以字母S开头)select ename,deptno from empwhere ename like'%K';(以K结尾)select ename,deptno from empwhere ename like'W___';(以W开头,后面仅有三个字母)select ename,job from empwhere job not like'sales%';(哪些雇员的工种名不以sales开头)谓词is null,is not null没有奖金的雇员(即mision为null)select ename,job from empwhere m is null;select ename,job from empwhere m is not null;多条件查询select ename,jobfrom empwhere deptno=20and job!='clerk';表达式+-*/算术表达式选择奖金高于其工资的5%的雇员select ename,sal,m,m/sal from empwhere m>.05*salorder by m/sal desc;日期型数据的运算add two days to6-Mar-876-Mar-87+2=8-Mar-87add two hours to6-Mar-876-Mar-87+2/24=6-Mar-87and2hrsadd15seconds to6-Mar-876-Mar-87+15/(24*60*60)=6-Mar-87and15secs列名的别名select ename employee from empwhere deptno=10;(别名:employee)select ename,sal,m,m/sal"C/S RATIO"from empwhere m>.05*salorder by m/sal desc;SQL命令的编辑list or l显示缓冲区的内容list4显示当前SQL命令的第4行,并把第4行作为当前行,在该行号后面有个*。
OracleSQL基础培训PPT课件93页

• 适用对象
• 学习过标准SQL,未使用过Oracle数据库的读者 • 适用过SQL Server或其他数据库,未使用过Oracle数据库的读者
目录
课程介绍 SQL介绍 DML基础 DDL基础 DCL基础 TL基础
SQL介绍
目录
课程介绍 SQL介绍 DML基础 DDL基础 DCL基础 TL基础
课程介绍
• 教程概述
• 本教程假设读者已了解关系型数据库基本原理,明白表、视图、 主键、索引、外键、约束、关联等基本概念
• 本教程定位是Oracle SQL简明、实用教程,偏向于SQL开发,若 进一步学习Oracle数据库设计,请参阅其他教程或书籍文档
DML基础
• 逻辑运算符号
• AND 两个为真则结果为真 • OR 一个为真即为真 • NOT 取相反的逻辑值
DML基础
• SELECT语句
• 完整SELECT语句 • 基本SELECT语句 • ORDER BY从句 • DISTINCT从句 • WHERE从句 • AND条件 • OR条件 • AND、OR复合条件 • IN 与 NOT IN • BETWEEN 与 NOT BETWEEN • LIKE与NOT LIKE • EXISITS 与 NOT EXISITS • GROUP BY从句 • HAVING从句 • JOINS关联
• 示例
• SELECT * FROM suppliers WHERE (city = ‘Chicago’ AND name = ‘IBM’) OR (city = ‘Seattle’);
DML基础-SELECT语句-IN 与 NOT IN
• 用途
《Oracle数据库应用与实践》课后习题参考答案

第 5 章 Oracle 模式对象
一、填空题
1. 字段级约束 表约束
2. NOT NULL 约束 UNIQUE 约束 PRIMARY KEY 约束
束
3. CREATE TABLE
CREATE ANY TABLE
4. UNIQUE PRIMARY KEY CHECK
5. 合并索引 重建索引
6. user_updatable_columns
一、 填空题 1. 数据挖掘 隐含的 未知的 2. API-ODM Java API ODM DBMS_DM PL/SQL API
3. Clustering Association Feature Extraction
Oracle 数据库应用与实践
2、某 cc 表数据如下: c1 c2 -------------1西 1安 1的 2天 2气
Oracle 数据库应用与实践
3好 …… 转换为 1 西安的 2 天气 3好 要求:不能改变表结构及数据内容,仅在最后通过 SELECT 显示出这个查询结果
代码为: create or replace function x return varchar2 is type t_array is table of number index by binary_integer; type tarray is table of varchar2(10) index by binary_integer; ta t_array; tar tarray; re varchar2(10); n number; na varchar2(10); begin select id bulk collect into ta from (select id,name from xx order by id) group by id; for i in st loop dbms_output.put(ta(i)||' '); select name bulk collect into tar from xx where id=ta(i); for i in st loop dbms_output.put(tar(i)); end loop; dbms_output.put_line(' '); end loop; return re; end;
第五章理论课使用PLSQL

《Oracle数据库应用》理论课使用PL/SQL⏹本章技能目标◆理解PL/SQL 功能和特点◆了解数据类型及其用法◆理解逻辑比较◆理解控制结构◆掌握错误处理1.PL/SQL 简介PL/SQL 是过程语言(Procedural Language)与结构化查询语言(SQL)结合而成的编程语言。
PL/SQL 是对SQL 的扩展。
PL/SQL支持多种数据类型,如大对象和集合类型,可使用条件和循环等控制结构。
PL/SQL可用于创建存储过程、触发器和程序包,给SQL语句的执行添加程序逻辑。
PL/SQL与Oracle 服务器和Oracle 工具紧密集成,具备可移植性、灵活性和安全性。
1.1PL/SQL 的优点PL/SQL是一种可以移植的高性能事务处理语言,它支持SQL和面向对象编程,提供了良好的性能和高效的处理能力。
PL/SQL的优点包括:支持SQLSQL是访问数据库德标准语言,通过使用SQL命令,用户可以轻松地操作存储在关系数据库中的数据。
在PL/SQL 中可以使用:数据操纵命令,事务控制命令,游标控制,SQL 函数和SQL 运算符和伪列。
PL/SQL还支持动态SQL,这种高级的编程技术使应用程序更加灵活,可以在程序运行过程中动态构造和运行各种SQL命令。
支持面向对象编程(OOP)面向对象编程以对象为中心,对象是构建面向对象应用程序的基本部分。
使用OOP开发应用程序大大减少了建立复杂应用程序所需的成本和时间。
对象类型是面向对象的理想建模工具,允许属于不同组的开发人员同时开发软件组件。
PL/SQL全面支持面向对象的编程。
2可移植性,可运行在任何操作系统和平台上的Oralce 数据库使用PL/SQL 编写的应用程序可移植到安装任何操作系统或平台的Oracle 服务器上,还可以编写可移植程序库,在不同的环境中重用。
更佳的性能,PL/SQL 经过编译执行 SQL 是一种非过程语言,在此语言中一次只能执行一条语句,因此在连续的语句之间没有关联。
plsql的set语句用法_概述说明以及解释

plsql的set语句用法概述说明以及解释1. 引言1.1 概述本文将重点介绍和解释PL/SQL的SET语句的用法。
PL/SQL是Oracle数据库中一种编程语言,用于存储过程、触发器和函数等对象的开发。
SET语句作为PL/SQL中最基本且常用的语句之一,具有灵活性和强大功能,在数据处理和逻辑控制方面起到了重要作用。
1.2 文章结构本文主要分为五个部分。
首先是引言部分,对文章进行概要介绍。
接下来是PL/SQL的SET语句的基本用法及使用场景进行详细讲解。
然后是对SET语句的详细说明和示例,包括赋值操作符、条件判断和逻辑运算符以及查询子句和聚合函数的使用方法。
第四部分将通过应用实例分析SET语句在PL/SQL编程中的具体应用,涵盖更新表中记录、处理游标数据集合以及执行动态SQL操作等方面。
最后是总结与展望部分,对PL/SQL的SET语句进行优势特点总结,并展望未来其在PL/SQL开发中的趋势与发展。
1.3 目的本文旨在全面阐述和解释PL/SQL的SET语句用法,并通过实例演示其在实际应用中的作用。
通过阅读本文,读者将能够掌握SET语句的基本语法和使用场景,了解SET语句中赋值操作符、条件判断和逻辑运算符以及查询子句和聚合函数的使用方法。
此外,读者还将通过应用实例的分析了解如何使用SET语句来更新表中的记录、处理游标数据集合以及执行动态SQL操作。
最后,在总结与展望部分,读者将对PL/SQL的SET语句有更全面和深入的认识,并对未来其在PL/SQL开发中的趋势与发展有一定预期。
2. PL/SQL的SET语句用法2.1 什么是PL/SQL的SET语句PL/SQL的SET语句是一种用于在程序中设置变量值或表字段值的命令。
它提供了一种简单而有效的方法来更新数据或执行计算操作。
2.2 SET语句的基本语法PL/SQL中的SET语句通常由关键字SET、要设置值的目标对象以及赋予该对象新值组成。
SET语句可以用于设置各种类型的变量或数据库表字段。
Oracle数据库之PLSQL触发器

Oracle数据库之PLSQL触发器Oracle数据库之PL/SQL触发器1. 介绍触发器(trigger)是提供给程序员和数据分析员来保证数据完整性的⼀种⽅法,它是与表事件相关的特殊的存储过程,它的执⾏不是由程序调⽤,也不是⼿⼯启动,⽽是由事件来触发,⽐如当对⼀个表进⾏操作(insert,delete,update)时就会激活它执⾏。
触发器经常⽤于加强数据的完整性约束和业务规则等。
触发器有三种类型,分别是:DML触发器、替代触发器和系统触发器。
DML触发器顾名思义,DML触发器是由DML语句触发的。
例如数据库的INSERT、UPDATE、DELETE操作都可以触发该类型的触发器。
它们可以在这些语句之前或之后触发,或者在⾏级上触发(就是说对于每个受影响的⾏都触发⼀次)。
替代触发器替代触发器只能使⽤在视图上,与DML不同的是,DML触发器是运⾏在DML之外的,⽽替代触发器是代替激发它的DML语句运⾏。
替代触发器是⾏触发器。
系统触发器这种触发器是发⽣在如数据库启动或关闭等系统事件时,不是在执⾏DML语句时发⽣,当然也可以在DDL时触发。
触发器功能强⼤,轻松可靠地实现许多复杂的功能,但是我们也应该慎⽤。
为什么⼜要慎⽤呢?触发器本⾝没有过错,但如果我们滥⽤,会造成数据库及应⽤程序的维护困难。
在数据库操作中,我们可以通过关系、触发器、存储过程、应⽤程序等来实现数据操作,同时约束、缺省值也是保证数据完整性的重要保障。
如果我们对触发器过分的依赖,势必影响数据库的结构,同时增加了维护的复杂程度。
2. 触发器组成触发器主要由以下⼏个要素组成:1. 触发事件:引起触发器被触发的事件。
2. 触发时间:触发器是在触发事件发⽣之前(BEFORE)还是之后(AFTER)触发,也就是触发事件和该触发器的操作顺序。
3. 触发操作:触发器被触发之后的⽬的和意图,是触发器本⾝要做的事情。
4. 触发对象:包括表、视图、模式、数据库。
plsql explain 用法
PL/SQL 是Oracle 数据库中的一种编程语言,用于开发存储过程、触发器和函数等数据库对象。
而PL/SQL Explain 是Oracle 提供的工具,用于分析和解释PL/SQL 代码的性能问题。
下面我将详细介绍PL/SQL Explain 的定义、用法、重点、难点和注意事项,并结合实际案例进行说明。
定义:PL/SQL Explain 是Oracle 数据库中提供的一种工具,用于分析PL/SQL 代码的性能问题。
它可以帮助开发人员理解代码的执行计划和性能瓶颈,从而优化代码,提高数据库性能。
用法:使用PL/SQL Explain 分析代码性能的步骤如下:1.打开SQL Developer 或其他Oracle 数据库管理工具,连接到目标数据库。
2.在工具中选择“Explain Plan”选项,将要分析的PL/SQL 代码粘贴到指定位置。
3.点击“Explain”按钮,PL/SQL Explain 将生成一个执行计划,展示代码的执行过程和性能数据。
4.分析执行计划,找出潜在的性能问题,如嵌套循环、排序操作等。
5.根据分析结果,对代码进行优化,提高数据库性能。
重点:PL/SQL Explain 的重点在于分析PL/SQL 代码的执行计划。
执行计划是Oracle 数据库在执行SQL 语句时的一种优化策略,它包括了数据检索、表连接、排序等操作的顺序和方式。
通过分析执行计划,可以找出代码中的性能瓶颈,针对性地进行优化。
难点:使用PL/SQL Explain 分析代码性能的难点在于理解执行计划中的各种操作符和参数含义。
不同的操作符和参数可能对性能产生重大影响,需要深入了解Oracle 数据库的内部机制和优化策略才能做出正确的优化决策。
注意事项:在使用PL/SQL Explain 时,需要注意以下几点:1.确保代码已经通过测试和验证,避免在分析过程中引入新的错误或异常。
2.在分析执行计划时,要结合实际业务场景和数据规模进行考虑,避免过度优化导致代码复杂度增加。
Oracle12c中文版数据库管理、应用与开发实践教程PLSQL记录与集合
207
9.1.2
使用 PL/SQL 记录
记录在声明和定义之后便可以使用了,下面介绍记录的常规使用方式,首先是在 SELECT INTO 中的应用。 【范例 2】 假设要记录编号为 G001 客户的编号、 姓名和余额, 并输出客户姓名。 这里使用 PL/SQL 记录来实现,具体语句如下。
01 02 03 04 05 06 07 08 DECLARE TYPE guest_record_type IS RECORD ( Gno guest.gno%TYPE, Gname guest.gname %TYPE, Account guest.account%TYPE ); para_gno char(4):='G001'; --定义记录类型
PL/SQL 记录与集合
field_name2 datatype2 [NOT NULL] [ := DEFAULT EXPRESSION], ... field_nameN datatypeN [NOT NULL] [ := DEFAULT EXPRESSION]); record_name TYPE_NAME;
第 9 章
上述语法中,type_name 表示要定义的记录类型名称,接下来是定义记录类型中包 含的成员,每个成员都有名称、数据类型、是否为空和默认值等属性,多个成员之间用 逗号分隔,用分号结束成员的定义。最后再定义一个该记录类型的变量 record_name。 第二种方法是使用%rowtype 来定义 PL/SQL 记录,语法如下:
plsql使用方法
plsql使用方法PL/SQL是Oracle数据库的一种编程语言,它是Procedural Language/Structured Query Language(过程性语言/结构化查询语言)的缩写。
PL/SQL的主要作用是用于开发Oracle数据库应用程序,它可以在Oracle数据库内部直接执行存储过程、函数以及触发器等。
PL/SQL的使用方法1、PL/SQL语言的基本元素:变量、常量、运算符、条件语句和循环语句。
2、PL/SQL程序的结构:声明段、执行段和异常处理段。
3、定义变量和常量:DECLAREx NUMBER := 10; --定义变量x,并初始化为10y CONSTANT NUMBER := 20; --定义常量y,并初始化为20 BEGINNULL;END;/4、条件语句:IF boolean_expression THEN--执行一系列语句ELSEIF boolean_expression THEN--执行一系列语句ELSE--执行一系列语句END IF;5、循环语句:FOR loop_index IN [REVERSE] lower_limit..upper_limit LOOP --执行一系列语句END LOOP;WHILE boolean_expression LOOP--执行一系列语句END LOOP;LOOP--执行一系列语句EXIT WHEN boolean_expression; END LOOP;6、异常处理:BEGIN--执行一系列语句EXCEPTIONWHEN exception_name1 THEN --处理异常方式1WHEN exception_name2 THEN --处理异常方式2WHEN OTHERS THEN--处理所有其他异常情况END;7、使用游标:DECLARECURSOR cursor_name ISSELECT ...FROM ...WHERE ...;local_variable datatype;BEGINOPEN cursor_name;LOOPFETCH cursor_name INTO local_variable;EXIT WHEN cursor_name%NOTFOUND;--执行一系列语句END LOOP;CLOSE cursor_name;END;8、使用存储过程和函数:CREATE [OR REPLACE] PROCEDURE procedure_name [ (parameter [,parameter]) ]ISvariable datatype;...BEGIN--执行一系列语句EXCEPTION--处理异常END;CREATE [OR REPLACE] FUNCTION function_name [ (parameter [,parameter]) ]RETURN datatypeISvariable datatype;...BEGIN--执行一系列语句EXCEPTION--处理异常END;PL/SQL是Oracle数据库中非常实用的编程语言,它可以帮助我们开发高效、可靠和可重用的应用程序。
oracle sql培训教程 pdf
oracle sql培训教程 pdf标题:《Oracle SQL培训教程》PDF引言:Oracle是世界上最著名和广泛使用的关系数据库管理系统(RDBMS)之一。
它具有强大的功能和广泛的应用领域,是许多企业和组织的首选数据库系统。
为了帮助初学者快速掌握Oracle SQL的基本知识和技巧,本教程以PDF形式提供了详细的教学材料,旨在为读者提供全面的指导和实用的示例。
第一部分:基本概念和语法1. 数据库和表介绍:解释数据库和表的概念,介绍Oracle数据库的基本结构和组成部分。
2. SQL语言基础:详细介绍SQL的基本语法,包括数据查询、数据插入、数据更新和数据删除操作。
3. 数据类型和约束:讲解不同的数据类型和约束,如字符串、数值、日期和空值等。
4. 运算符和函数:介绍SQL中常用的运算符和函数,以及如何使用它们进行数据计算和转换。
5. 查询数据:通过实际的查询示例,教授如何使用SELECT语句从表中检索数据,包括条件查询、排序和聚合函数等。
第二部分:高级技巧和优化1. 多表查询:讲解如何在多个相关表之间建立关联,并使用JOIN查询实现复杂的数据检索。
2. 子查询和内嵌视图:教授如何使用子查询和内嵌视图来解决复杂的查询需求。
3. 分组和聚合:介绍如何使用GROUP BY子句和聚合函数对数据进行分组和计算。
4. 数据库连接和联合查询:解释不同类型的数据库连接,如内连接、外连接和自连接,并演示如何使用UNION和UNION ALL操作符联合查询。
5. 索引和性能优化:讨论索引的概念和作用,并提供一些优化数据库性能的实用技巧。
第三部分:实际案例和练习1. 案例研究:通过实际案例,展示如何应用Oracle SQL解决常见的业务问题。
2. 练习题目:提供一系列的练习题目,供读者巩固所学知识并提升实践能力。
结语:本教程提供了一个全面而实用的Oracle SQL培训材料,旨在帮助初学者快速掌握SQL的基础知识和高级技巧。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
[EXCEPTION handlers]
PL/SQL中的复合符号
• • • • • • • := || -/**/ <<>> .. ** 赋值操作符 连接操作符 单行注释 多行注释 标签分隔符 范围操作符 求幂操作符
变量和常量 1-2
• PL/SQL 块中可以使用变量和常量
– 在声明部分声明,使用前必须先声明 – 声明时必须指定数据类型,每行声明一个标识 符 – 在可执行部分的 SQL 语句和过程语句中使用
目标
• • • • • 理解 PL/SQL 功能和特点 了解数据类型及其用法 理解逻辑比较 理解控制结构 掌握错误处理
PL/SQL 简介
• PL/SQL 是过程语言(Procedural Language) 与结构化查询语言(SQL)结合而成的编程语 言 • PL/SQL 是对 SQL 的扩展 • 支持多种数据类型,如大对象和集合类型, 可使用条件和循环等控制结构 • 可用于创建存储过程、触发器和程序包, 给SQL语句的执行添加程序逻辑 • 与 Oracle 服务器和 Oracle 工具紧密集成, 具备可移植性、灵活性和安全性
SQL PL/SQL
• 安全性,可以通过存储过程限制用户对数 据的访问
PL/SQL 的体系结构
• PL/SQL 引擎驻留在 Oracle 服务器中 • 该引擎接受 PL/SQL 块并对其进行编译执 行 Oracle 服务器
将PL/SQL 块发送给 Oracle 服务器 PL/SQL引擎 过程语句 执行器
使用PL/SQL
《Oracle数据库应用与开发》第05章
回顾
• • • • 同义词是现有数据库对象的别名 序列用于生成唯一、连续的序号 视图是基于一个或多个表的虚拟表 索引是与表相关的一个可选结构,用于提 高 SQL 语句执行的性能 • 索引类型有标准索引、唯一索引、反向键 索引、位图索引和基于函数的索引 • 索引组织表基于主键访问数据
数据类型
• PL/SQL 支持的内置数据类型
数据类型
标量类型
LOB类型
属性类型
ቤተ መጻሕፍቲ ባይዱ
数字 字符
存储非结构化数据块 BFILE BLOB %TYPE %ROWTYPE
布尔型
日期时间
CLOB 提供某个变量或数据库表列 提供表示表中一行的记录类 的数据类型 型 NCLOB
数字数据类型
• 指定数值的存储格式
数字数据类型
循环控制
• 循环控制用于重复执行一系列语句 • 循环控制语句包括:
– LOOP、EXIT 和 EXIT WHEN
• 循环控制的三种类型:
LOOP – LOOP - 无条件循环 sequence_of_statements WHILE condition LOOP END LOOP; – WHILE - 根据条件循环 sequence_of_statements END counter IN [REVERSE] value1..value2 FOR LOOP; – FOR - 循环固定的次数 LOOP sequence_of_statements END LOOP;
LOB 数据类型 2-1
• 用于存储大文本、图像、视频剪辑和声音剪 辑等非结构化数据。 • LOB 数据类型可存储最大 4GB的数据。 • LOB 类型包括:
– BLOB 将大型二进制对象存储在数据库中 – CLOB 将大型字符数据存储在数据库中 – NCLOB 存储大型UNICODE字符数据 – BFILE 将大型二进制对象存储在操作系统文 件中
逻辑比较
• 逻辑比较用于比较变量和常量的值,这些 布尔表达式的结果为TRUE、FALSE或 表达式称为布尔表达式 NULL,通常由逻辑运算符AND、OR和 NOT连接 • 布尔表达式由关系运算符与变量或常量组 • 成 布尔表达式有三种类型: 关系运算符 说明
= 比较两个变量是否相等,如果值相当,则返回 True – 数字布尔型 比较两个变量,如果不相等,则返回 True – <>, != 字符布尔型 < 比较两个变量,检查值 1 是否小于值 2 – 日期布尔型 > 比较两个变量,检查值 1 是否大于 值 2 <= 比较两个变量,检查变量 1 是否小于等于变量 2
用户将整个语句块发送给 Oracle
Procedure Begin ProcedureCall SQL Command … End
PL/SQL 的优点 2-2
• 与 SQL 紧密集成,简化数据处理。
– 支持所有 SQL 数据类型 – 支持 NULL 值 – 支持 %TYPE 和 %ROWTYPE 属性类型
BINARY_INTEGER
NUMBER
PLS_INTEGER
存储整数、实数和浮点数 存储有符号整数,可使 存储有符号整数,所需存储 NATURAL DECIMAL 空间少于NUMBER类型值 算术计算快速而有效 NATURALN FLOAT POSITIVE POSITIVEN SIGNTYPE INTEGER
条件控制 2-2
• CASE 语句用于根据单个变量或表达式与 多个值进行比较 • 执行 CASE 语句前,先计算选择器的值 BEGIN
CASE ‘&grade’ WHEN ’A’ THEN DBMS_OUTPUT.PUT_LINE(’优异’); WHEN ’B’ THEN DBMS_OUTPUT.PUT_LINE (优秀’); WHEN ’C’ THEN DBMS_OUTPUT.PUT_LINE (’良好’); WHEN ’D’ THEN DBMS_OUTPUT.PUT_LINE (’一般’); WHEN ’F’ THEN DBMS_OUTPUT.PUT_LINE (’较差’); ELSE DBMS_OUTPUT.PUT_LINE (’没有此成绩’); END CASE; END;
REAL
字符数据类型
• 字符数据类型包括: 数据类型
– CHAR – VARCHAR2 – LONG – RAW – LONG RAW
CHAR LONG SQL类型 1..2000 1..2GB PL/SQL类型 1..32767 1..32760
LONG RAW RAW
1..2GB 1..2000
1..32760 1..32767
1..32767
• PL/SQL 的数据类 型与 SQL数据类 型的比较
VARCHAR 1..4000 2
日期时间和布尔数据类型
• 日期时间类型
– 存储日期和时间数据 – 常用的两种日期时间类型
• DATE • TIMESTAMP
• 布尔数据类型
– 此类别只有一种类型,即BOOLEAN类型 – 用于存储逻辑值(TRUE、FALSE和NULL) – 不能向数据库中插入BOOLEAN数据 – 不能将列值保存到BOOLEAN变量中 – 只能对BOOLEAN变量执行逻辑操作
将结果发送给用户
用户
执行过程语句 引擎将 SQL 语句发送给 执行 SQL 语句 SQL 语句执行器 SQL 语句 执行器
PL/SQL 块简介
• DECLARE PL/SQL 块是构成 声明部分定义变量、游标 PL/SQL 程序的基本单 qty_on_hand NUMBER(5); 和自定义异常 BEGIN 元 SELECT quantity INTO qty_on_hand • FROM Products = '芭比娃娃' 将逻辑上相关的声明和语句组合在一起 WHERE product FOR UPDATE OF quantity; • IFPL/SQL 0 THEN qty_on_hand > 分为三个部分,声明部分、可执 UPDATE Products SET quantity = quantity + 1 行部分和异常处理部分 包含 SQL 和 PL/SQL 语 WHERE product = '芭比娃娃';
LOB 数据类型 2-2
• LOB 类型的数据库列仅存储定位符,该定 位符指向大型对象的存储位置 SET SERVEROUTPUT ON • DECLARE DBMS_LOB程序包用于操纵 LOB 数据
clob_var CLOB; amount INTEGER; offset INTEGER; output_var VARCHAR2(100); BEGIN 从表中选择 CLOB 定位符 SELECT chapter_text INTO clob_var 到 clob_var变量中 FROM my_book_text WHERE chapter_id=5; amount := 24; -- 要读取的字符数 offset := 1; -- 起始位置 DBMS_LOB.READ(clob_var,amount,offset,output_var); DBMS_OUTPUT.PUT_LINE(output_var); 从CLOB数据中读取24个字 END; 符存储到 output_var 变量中 显示读到的信息 /
PL/SQL 的优点 2-1
• 支持 SQL,在 PL/SQL 中可以使用:
– 数据操纵命令 – 事务控制命令 – 游标控制 – SQL 函数和 SQL 运算符