《Oracle数据库应用与开发》第05章[PLSQL]理论课

合集下载

Oracle PL SQL 编程手册(SQL大全)

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页

OracleSQL基础培训PPT课件93页
• 课程目标是完成课程后可进行项目中大部分Oracle SQL开发
• 适用对象
• 学习过标准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数据库应用与实践》课后习题参考答案

《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

第五章理论课使用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语句用法_概述说明以及解释

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数据库之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记录与集合

record_name table_name%rowtype --基于不同的对象定义 PL/SQL 记录,此处为表 record_name view_name%rowtype --基于不同的对象定义 PL/SQL 记录,此处为视图 reocrd_name cursor_name%rowtype --基于不同的对象定义 PL/SQL 记录,此处为游标
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. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
SELECT itemrate INTO irate FROM itemfile WHERE itemcode = icode; IF irate > 200 THEN UPDATE itemfile SET itemrate = itemrate - 200 WHERE itemcode = icode; ELSE UPDATE itemfile SET itemrate = itemrate - 50 WHERE itemcode = icode; END IF; DBMS_OUTPUT.PUT_LINE('itemrate='|| irate); END;
[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 运算符
相关文档
最新文档