初识Oracle PL/SQL

1、什么是PL/SQL

  • PL/SQL也是一种程序语言,被称作支持SQL的程序语言(Program Language),是Oracle数据库对SQL语句的扩展,在普通的SQL语言中增加了编程语言的特点;
  • 数据操作和查询语句被包含在PL/SQL代码的过程性单元中,经过逻辑判断、循环等操作完成复杂的功能或者计算。

2、PL/SQL优点

使用PL/SQL可以编写具有很多高级功能的程序,虽然这些功能可以通过多个SQL语句来完成同样的功能,但是PL/SQL具有如下的优点:

  • 使一组语句功能形成模块化程序开发(类似于编程语言中的封装)
  • 使用过程性语言控制程序结构(可以使用编程语言控制,if for…)
  • 可以对程序中的错误进行处理(可以异常处理)
  • 具有较好的可移植性(在oracle之间移植)
  • 集成在数据库中,调用更快
  • 减少了网络的交互,有助于提高程序性能(减少客户端与数据库服务器之间的交互次数)

3、SQL语句、SQL*Plus命令与PL/SQL语句之间关系

pl/sql是oracle的一门语言,它包括标准SQL,oracle扩展SQL,oracle自定义函数,存储过程,触发器,软件包…;
sql*plus是来格式化查询结果、设置选择、编辑及存储SQL命令、以设置查询结果的显示格式,sqlplus运行解释pl/sql的程序,你也可以在sqlplus里运行sql语句。
在这里插入图片描述
在这里插入图片描述

4、PL/SQL的数据类型

  • 基本数据类型
  • 复合数据类型
    表类型(table 单列多行):类似于数组,由两个组件组成:
    • 数据类型为BINARY_ INTEGER(整 形数字)的主键
    • 数据类型为一个确定的简单类型的列

Table类型没有长度限制,可以动态增长.表类型中的第二部分类似与数组中的值,这个部分必须是一个已经确定的简单类型,不能是其他的复合类型表类型的结构很像数组.第一部分使一个按1递增的整形数字,起到数字索引的作用,第二部分使–种确定的简单类型,用来存放每个索引号对应的具体的数值。

DECLARE
	--在声明部分 声明表类型
	--TABLE_TYPE 表的索引为BINARY_ INTEGER(整形数字),存储的对象为VARCHAR2(6)
	TYPE TABLE_TYPE IS TABLE OF VARCHAR2(6) INDEX BY BINARY_INTEGER;
	--使用声明的表类型来声明变量
	V_TABLE TABLE_TYPE;
BEGIN
	--可以通过index来读/取值
	--表类型是没有长度限制的
	V_TABLE(1):='工程师';
END;
/

记录类型(RECORE 单行多列):类似于集合
由多个组件组成的一种类型.包含一个或几个组件,每个组件称为一个域(FIELD),域的数据类型可以是简单变量类型、另一个RECORD类型或TABLE类型;在使用RECORD变量时把多个域的集合作为一个逻辑单元使用,对记录类型变量赋值或引用,都需要使用“记录变量名城名”的方式来实现;主要用于从表中取出查询到的行数据。

DECLARE
	--在声明部分 声明记录类型
	TYPE RECORE_TYPE IS RECORE(
		ID NUMBER,
		EMPNO NUMBER(4),
		NAME VARCHAR2(20),
		BRITH DATE,
		SAL NUMBER(10,2)
	);
	--使用声明的记录类型来声明变量
	V_RECORD RECORE_TYPE%ROWTYPE;
BEGIN
	SELECT * INTO V_RECORD FROM EMP;
	V_RECORD.NAME;
END;
/

5、%TYPE 与 %ROWTYPE的区别

  • %TYPE的前缀可以是已经声明的简单类型,也可以是TABLE类型
  • %ROWTYPE前缀肯定都是记录类型,可以是一个表名(不是TABLE类型,是数据库中的表),也可以是前面声明的一个记录类型的变量(该变量必须要参照于一个表,而不能是自定义的记录类型);对于前缀是表,%ROWTYPE会先用表中的字段创建一个记录类型,再用这个记录类型声明变量
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蓝桉未与

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值