1.PL SQL基础知识1
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
举例
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;
特点 PL/SQL 包含过程化语句和SQL语句 数据操作和查询语句被包含在PL/SQL代码的程序单元中 (PL/SQL块),经过逻辑判断、循环等操作完成复杂的功能或 者计算.
1.1.2PL/SQL的优点 1/2
改善了性能
PL/SQL以整个语句块发送给服务器,这个过程在单次调用 中完成,降低了网络拥挤。而如果不使用PL/SQL,每条 SQL语句都有单独的传输交互,在网络环境下占用大量的 服务器时间,同时导致网络拥挤。
使用%TYPE 属性的好处: –在编程时,可以不去查询数据库中字段的数据类型 –数据库中字段的数据类型可能被改变 –为了和前面的变量类型始终保持一致
1.3.2变量的类型 1/8
变量的类型:
PL/SQL变量 标量型(只能存储单值、内部没有分量) 复合型 引用型 LOB型 (大型的对象)
可重用性
PL/SQL能运行在任何ORACLE环境中(不论它的操作系统
和平台),在其他ORACLE能够运行的操作系统上无需修改 代码。
模块化
每个PL/SQL单元可以包含一个或多个程序块,程序中的每一块
都实现一个逻辑操作,从而把不同的任务进行分割,由不同的 块来实现,块之间可以是独立的或是嵌套的。
匿名 PL/SQL 块
匿名 PL/SQL 块
过程语句 SQL语句
SQL 语句执行器
一、 PL/SQL 基础知识
PL/SQL 基础知识: 1.1为什么使用PL/SQL 1.2PL/SQL结构 1.3变量声明 1.4表达式 1.5与Oracle的交互
1.2.1块结构 1/4
PL/SQL是块结构化语言(程序能被分成若干个逻
1.1.2PL/SQL的优点 2/2
SQL
应用程序
SQL SQL SQL
Database
应用程序
SQL IF...THEN SQL ELSE SQL END IF; SQL
Database
1.1.3PL/SQL语句的处理
ORACLE 服务器 主程序或 ORACLE 工具 PL/SQL 引擎 过程语句 执行器
1.3.1声明语法 8/8
%TYPE 的属性(续)
语法: Variable_name
... v_ename v_balance v_min_balance ...
table.column_name%type;
emp.ename%TYPE; NUMBER(7,2); v_balance%TYPE := 10;
其它变量(续)
外部变量 Server 外部变量是在某一程序的主 环境下声明的一种变量。
1.3.2变量的类型 7/8
其它变量(续)
要在PL/SQL中引用绑定变量,需在该变量名前加上
一个冒号 (:)。 举例
VARIABLE DECLARE v_sal BEGIN SELECT INTO v_sal FROM emp WHERE :g_salary := END; / g_salary NUMBER
BEGIN EXCEPTION END;
1.2.2块类型
PL/SQL块按存储方式及是否带名称等分为以下几种类型:
匿名块:一般在要运行的应用中说明,运行时传递给PL/SQL
引擎处理,只能执行一次,不能被存储在数据库中。
过程,函数和包(Procedure,Function & Package):是
外部变量(非PL/SQL变量) 表单应用程序中的屏幕域 SQL*Plus 主机变量
1.3.2变量的类型 2/8
标量数据类型:
容纳单个值 内部没有分量 分为四个类别:
数字型
number、binary_integer等 字符型 char、varchar2、long、RAW等 日期型 date、timestamp等 布尔型 true、false、null
Oracle
PL/SQL编程
一、 PL/SQL 基础知识
目标:
PL/SQL的基本内容,通过本课的学习 ,应该掌握如下知识: 1)了解PL/SQL的基本概念 2)掌握PL/SQL块的基本组成部分 3)区分PL/SQL变量和非PL/SQL变量 4)声明 PL/SQL 变量 5)理解%TYPE属性 6)在PL/SQL中编写SQL语句
命名的PL/SQL块,被存储在数据库中,能够被多次执行,可 以用外部程序来显示执行。
触发器(Trigger):是命名的PL/SQL块,被存储在数据库
中,能够被多次执行,当相应的触发事件发生时自动被执行。
举例
程序结构 注释 变量
一、PL/SQL 基础知识
PL/SQL 基础知识: 1.1为什么使用PL/SQL 1.2PL/SQL结构 1.3变量声明 1.4表达式 1.5与Oracle的交互
辑块)
PL/SQL块的组成
PL/SQL语言以块为单位,块中可以嵌套子块。
一个基本的PL/SQL块由3部分组成:
定义部分(DECLARE)
可执行部分(BEGIN)
异常处理部分(EXCEPTION)
1.2.1块结构 2/4
PL/SQL块的定义部分
与其它语言一样,PL/SQL中使用的变量、常量、游标和异常处理的
名字都必须先定义后使用。并且必须定义在以DECLARE关键字开头 的定义部分。
PL/SQL块的可执行部分
该部分是PL/SQL块的主体,包含该块的可执行语句。该部分定义了
块的功能,是必须的。 由关键字BEGIN开始,以END结束。
PL/SQL块的异常处理部分
该部分包含块的异常处理程序(错误处理程序)。当该块程序体中
1.3.1声明语法 1/8
PL/SQL中可使用标识符来声明变量、常量、游标、
用户定义的异常等,并在SQL语句或过程化的语 句中使用。 标识符的命名和Oracle对数据库对象的命名原则 相同。
至多有30个字符 不能是保留字 必须以字母开头 不允许与数据库中表的列名相同
包含字母、$、_、数字符号
的某个语句出现异常(检测到一个错误)时,oracle将程序控制转 到异常部分的相应的异常处理程序中进行进一步的处理。该部分由 关键字EXCEPTION开始,END关键字结束。
1.2.1块结构 3/4
DECLARE – 可选 变量、常量、游标、用户自定义的特殊类型 DECLARE BEGIN – 必须 SQL 语句 BEGIN PL/SQL 语句 EXCEPTION EXCEPTION – 可选 END; 错误发生时的处理动作 END; – 必须
1.3.1声明语法 7/8
%TYPE 的属性
通过%TYPE属性声明一个变量,实际上就是参照变
量或者表中字段的类型作为变量的类型,并且保 持同步。变量将遵循下面的类型声明:
已经声明过的变量类型
数据库中表的字段类型
可以作为%TYPE前缀的可以是
数据库表和列
前面声明的变量名称
PL/SQL在运行程序时确定变量的数据类型和大小
v_sal1:=5000; v_sal2:=6000; v_sal1<v_sal2; -- 该表达式返回值是TRUE v_comm_sal BOOLEAN:=(v_sal1<v_sal2);
1.3.2变量的类型 5/8
其它变量(续)
食谱 (CLOB) 照片 (BLOB) Baidu Nhomakorabea影 (BFILE)
1.3.2变量的类型 6/8
时间:2学时
教学方法:讲授ppt+ 上机练习+点评
一、PL/SQL 基础知识
PL/SQL 基础知识: 1.1为什么使用PL/SQL 1.2PL/SQL结构 1.3变量声明 1.4表达式 1.5与Oracle的交互
1.1.1什么是PL/SQL
什么是PL/SQL
PL/SQL是由Oracle开发,专用于Oracle的一种程序设计语言 PL代表 Procedural Language SQL代表Structured Query Language PL/SQL是Oracle数据库对SQL语句的扩展,增加了编程语言的
1.3.2变量的类型 3/8
TRUE
25-OCT-99
“Four score and seven years ago our fathers brought forth upon this continent, a new nation,
256120.08
conceived in LIBERTY, and dedicated
emp.sal%TYPE;
sal
empno = 7369; v_sal;
1.3.3变量赋值 1/4
语法
identifier := expr;
expr 可以是变量、文字和函数调用,但不可以是数据 库中的列。
为新员工设定雇佣的日期
v_hiredate := '31-DEC-98';
员工的名字设定为“Maduro”
对标识符的命名最好遵循相关命名规范
1.3.1声明语法 2/8
标识符
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
1.3.1声明语法 6/8
变量的命名规则与SQL的规则基本相同,即每个标识符必须以字
母开头,而且不分大小写。 使用NOT NULL约束条件定义变量时,必须为变量赋予一个值 在每行上声明一个变量,使代码更易于阅读和维护 在常量声明中,关键字CONSTANT必须位于类型指定符之前,必 须被初始化 使用赋值运算符(:=)或DEFAULT保留字将变量初始化 在PL/SQL中使用的变量、常量、游标和异常处理的名字都必须 先声明后使用。 声明部分是包括在关键字DECLARE和BEGIN之间的部分,每条语 句之后用‘;’结束。
1.2.1块结构 4/4
DECLARE v_variable VARCHAR2(5); BEGIN SELECT column_name INTO v_variable FROM table_name; EXCEPTION WHEN exception_name THEN ... END;
DECLARE
例子
v_sal c_company_name emp_cursor e_too_many order_total_table customer_record p_sal
g_name
g_year_sal
1.3.1声明语法 3/8
判断下列标识符合法性:
• •
•
• • • • •
Dot&dash Debit-am On$pop On/off As_qw User id Qwe 2we
v_ename := 'Maduro';
1.3.3变量赋值 2/4
另外一种为变量赋值的方式是从数据库中选取值赋给
变量。语法:
SELECT
column INTO FROM table WHERE condition;
variable
1.3.1声明语法 4/8
在声明部分声明并初始化变量
在执行部分给变量赋新值 通过参数在PL/SQL块之间传递值 通过输出变量查看结果
1.3.1声明语法 5/8
语法
identifier [CONSTANT] datatype [NOT NULL] [:= | DEFAULT expr];
to the proposition that all men are created equal.”
Shenyang
1.3.2变量的类型 4/8
其它变量
布尔型变量仅有三个值—TRUE、FALSE和
NULL. 布尔型变量由逻辑运算符—AND、OR和NOT连 接. 算术、字符和日期表达式可以返回一个布尔值。