1.PL SQL基础知识

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

g_name
g_year_sal
3 Sept. 2008 Confidential
PL/SQL中变量(续)
判断下列标识符合法性:
• • • • • • • •
Dot&dash Debit-am On$pop On/off As_qw User id Qwe 2we
3 Sept. 2008 Confidential
3 Sept. 2008 Confidential
PL/SQL 块
PL/SQL是块结构化语言(程序能被分成若干个逻辑块) • PL/SQL块的组成 – PL/SQL语言以块为单位,块中可以嵌套子块。 – 一个基本的PL/SQL块由3部分组成: 定义部分(DECLARE) 可执行部分(BEGIN) 异常处理部分(EXCEPTION)
3 Sept. 2008 Confidential
声明 PL/SQL 变量(续)
• 变量的命名规则与SQL的规则基本相同,即每个标识符必须以字 • • • • • •
母开头,而且不分大小写。 使用NOT NULL约束条件定义变量时,必须为变量赋予一个值 在每行上声明一个变量,使代码更易于阅读和维护 在常量声明中,关键字CONSTANT必须位于类型指定符之前,必须 被初始化 使用赋值运算符(:=)或DEFAULT保留字将变量初始化 在PL/SQL中使用的变量、常量、游标和异常处理的名字都必须先 声明后使用。 声明部分是包括在关键字DECLARE和BEGIN之间的部分,每条语句 之后用‘;’结束。
PL/SQL中变量(续)
TRUE
25-OCT-99
“Four score and seven years ago our fathers brought forth upon this continent, a new nation, conceived in LIBERTY, and dedicated
课时(H) 4 1.5 1.5 4 3 4 1 5 4
3 Sept. 2008 Confidential
第一章: PL/SQL 基础知识
目标:
本章旨在向学员介绍PL/SQL的基本内 容,通过本课的学习,学员应该掌握 如下知识: 1)了解PL/SQL的基本概念 2)掌握PL/SQL块的基本组成部分 3)区分PL/SQL变量和非PL/SQL变量 4)声明 PL/SQL 变量 5)理解%TYPE属性 6)在PL/SQL中编写SQL语句 学时:4学时 教学方法:讲授ppt +上机练习+点评
3 Sept. 2008 Confidential
PL/SQL概述
什么是PL/SQL • PL/SQL是由Oracle开发,专用于Oracle的一种程序 设计语言 • PL代表 Procedural Language • SQL代表Structured Query Language • PL/SQL是Oracle数据库对SQL语句的扩展,增加了编 程语言的特点 • PL/SQL 包含过程化语句和SQL语句 • 数据操作和查询语句被包含在PL/SQL代码的程序单元中 (PL/SQL块),经过逻辑判断、循环等操作完成复杂的 功能或者计算.
3 Sept. 2008 Confidential
声明 PL/SQL 变量(续)
– 不同块的变量可以同名 – 数据库中列名应与变量名有截然不同的名字
DECLARE v_job empno BEGIN SELECT INTO FROM WHERE END;
பைடு நூலகம்
emp.job%TYPE; emp.empno%TYPE:=7369; job v_job emp empno = empno;
3 Sept. 2008 Confidential
声明 PL/SQL 变量(续)
• 变量同名时的优先级: – 本地变量名和形式参数名要优于数据库表名(同名
时当作变量或参数来引用) – 列名优于本地变量名(同名时当作列名来引用)
3 Sept. 2008 Confidential
变量的赋值
语法
identifier := expr;
– 至多有30个字符 – 不能是保留字 – 必须以字母开头 – 不允许与数据库中表的列名相同 – 包含字母、$、#、_、数字符号


对标识符的命名最好遵循相关命名规范
3 Sept. 2008 Confidential
PL/SQL中变量(续)
标识符 Variable Constant Cursor Exception Table Record SQL*Plus substitution parameter SQL*Plus global variable 惯例 v_name C_name name_cursor e_name name_table name_record p_name 例子 v_sal c_company_name emp_cursor e_too_many order_total_table customer_record p_sal
3 Sept. 2008 Confidential
%TYPE 的属性(续)
语法: Variable_name
... v_ename v_balance v_min_balance ...
table.column_name%type;
PL/SQL中变量(续)
变量的类型:
• PL/SQL变量 – 标量型(只能存储单值、内部没有分量) – 复合型 – 引用型 – LOB型 (大型的对象) • 外部变量(非PL/SQL变量) – 表单应用程序中的屏幕域 – SQL*Plus 主机变量
3 Sept. 2008 Confidential
3 Sept. 2008 Confidential
PL/SQL 块(续)
• DECLARE – 可选 – 变量、常量、游标、用户自定义的特
殊类型 • BEGIN – 必须 – SQL 语句 – PL/SQL 语句 • EXCEPTION – 可选 – 错误发生时的处理动作 • END; – 必须
DECLARE BEGIN EXCEPTION END;
3 Sept. 2008 Confidential
PL/SQL 块(续)
DECLARE v_variable VARCHAR2(5); BEGIN SELECT column_name INTO v_variable FROM table_name; EXCEPTION WHEN exception_name THEN ... END;
PL/SQL中变量(续)
标量数据类型:
• 容纳单个值 • 内部没有分量 • 分为四个类别: – 数字型
number、binary_integer等 – 字符型 char、varchar2、long、RAW等 – 日期型 date、timestamp等 – 布尔型 true、false、null
3 Sept. 2008 Confidential

3 Sept. 2008 Confidential
PL/SQL 块(续)
PL/SQL块的定义部分 与其它语言一样,PL/SQL中使用的变量、常量、游标 和异常处理的名字都必须先定义后使用。并且必须定 义在以DECLARE关键字开头的定义部分。 PL/SQL块的可执行部分 该部分是PL/SQL块的主体,包含过程化语句和 SQL语 包含 句。 该部分定义了块的功能,是必须的。 由关键字 BEGIN开始,以END结束。 PL/SQL块的异常处理部分 该部分包含块的异常处理程序(错误处理程序)。当 该块程序体中的某个语句出现异常(检测到一个错误) 时,oracle将程序控制转到异常部分的相应的异常处 理程序中进行进一步的处理。该部分由关键字 EXCEPTION开始,END关键字结束。
举例
Declare v_hiredate v_deptno v_location c_tax_rate v_valid DATE; NUMBER(2) NOT NULL := 10; VARCHAR2(13) := ‘Shenyang'; CONSTANT NUMBER(3,2) := 8.25; BOOLEAN NOT NULL := TRUE;
256120.08
to the proposition that all men are created equal.”
Shenyang
3 Sept. 2008 Confidential
声明 PL/SQL 变量
语法
identifier [CONSTANT] datatype [NOT NULL] [:= | DEFAULT expr];
3 Sept. 2008 Confidential
PL/SQL的优点(续)
SQL SQL SQL SQL
应用程序
Database
应用程序
SQL IF...THEN SQL ELSE SQL END IF; SQL
Database
3 Sept. 2008 Confidential
PL/SQL块的类型
3 Sept. 2008 Confidential
PL/SQL的优点
• 改善了性能
PL/SQL以整个语句块发送给服务器,这个过程在单次调用 中完成,降低了网络拥挤。而如果不使用PL/SQL,每条 SQL语句都要单独的传输交互,在网络环境下占用大量的 服务器时间,同时导致网络拥挤。 • 跨平台 PL/SQL能运行在任意操作系统下的ORACLE环境中,无需 修改代码。 • 模块化 程序可以包含一个或多个PL/SQL块,每个块都实现一个逻 辑操作,从而把不同的任务进行分割,由不同的块来实现, 块之间可以是独立的或是嵌套的。
• PL/SQL块按存储方式及是否带名称分为以下两种类型: – 匿名块:只能执行一次,不能被存储在数据库中。 – 过程、函数、包、触发器:是命名的PL/SQL块,被存储在
数据库中,能够被多次执行。
3 Sept. 2008 Confidential
PL/SQL中变量

PL/SQL中可使用标识符来声明变量、常量、游标、用户 定义的异常等,并在SQL语句或过程化的语句中使用。 标识符的命名和Oracle对数据库对象的命名原则相同。
Oracle PL/SQL —— PL/SQL基础知识
东软IT人才实训中心
7 Copyright Mar. 2008 2008 By Neusoft Group. All rights reserved © Neusoft Confidential
课程结构
内容
第一章 PL/SQL 基础知识 第二章 编写控制结构 第三章 复合数据类型 第四章 编写游标 第五章 异常处理 第六章 创建存储过程 第七章 创建函数 第八章 创建包 第九章 触发器
3 Sept. 2008 Confidential
%TYPE 的属性
• 通过%TYPE属性声明一个变量,实际上就是参照变量或
者表中字段的类型作为变量的类型,并且保持同步。变 量将遵循下面的类型声明: – 已经声明过的变量类型
– 数据库中表的字段类型 • 可以作为%TYPE前缀的可以是 – 数据库表和列 – 前面声明的变量名称 • PL/SQL在运行程序时确定变量的数据类型和大小
expr 可以是变量、文字和函数调用,但不可以是数 据库中的列。 据库中的列 为新员工设定雇佣的日期
v_hiredate := '31-DEC-98';
员工的名字设定为“Maduro”
v_ename := 'Maduro';
3 Sept. 2008 Confidential
变量的赋值(续)
另外一种为变量赋值的方式是从数据库中选取值赋给变量。 语法: SELECT column INTO variable FROM table WHERE condition; SELECT 语句执行后,将出现下列情况之一: • 只检索了一行 • 检索了多行 • 不检索任何行 只有当检索一行时,SELECT才成功操作。
DECLARE BEGIN EXCEPTION END;
3 Sept. 2008 Confidential
PL/SQL语句的处理
ORACLE 服务器 主程序或 ORACLE 工具 PL/SQL 引擎 过程语句 SQL语句 过程语句 执行器
匿名 PL/SQL 块
匿名 PL/SQL 块
SQL 语句执行器
相关文档
最新文档