PL/SQL

本文深入探讨了PL/SQL语言的基本语法和高级特性,包括变量、运算符、控制语句以及常见数据类型。通过实例解析,帮助开发者掌握PL/SQL的核心用法,提升数据库操作和编程效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一,简介
PL/SQL是Procedure Language & Structured Query Language的缩写。
可运行SQL语句,可定义变量,可执行逻辑。
可执行的SQL语句有INSERT,UPDATE,DELETE,SELECT INTO,COMMIT,ROLLBACK,SAVEPOINT。


二,基本语法
1,结构

DECLARE
  /*声明部分:声明变量,类型,游标,局部存储过程和函数*/
BEGIN
  /*执行部分:SQL语句,执行逻辑*/
EXCEPTION
  /*异常部分:异常处理*/
END;

2,变量
1> 变量的声明和赋值
v_name 数据类型 [:= 初始值];

2> 变量的命名规则
标识符 命名规则 例子
程序变量 V_name V_name 
程序常量 C_name C_company_name
异常标识     E_name E_too_many
SQL*Plus替代变量 P_name   P_sal
绑定变量 G_name  G_sal
游标变量  Tablename_cursor Emp_cursor
表类型  Tablename_record_type Emp_record_type
记录类型  Name_record  Emp_record


3> 变量的数据类型
a> 基本类型

类型 子类 说明 范围 ORACLE限制
NUMBER(p,s)Dec
Double
precision
Integer
Int
Numeric
Real
Small int 
小数,NUMBER 的子类型
高精度实数
整数,NUMBER 的子类型
整数, NUMBER 的子类型
与NUMBER等价
与NUMBER等价
整数, 比 integer 小 
  
BINARY_INTEGER  带符号整数,为整数计算优化性能  
CHAR Character
String
Rowid
Nchar 
定长字符串


民族语言字符集 
0-32767
可选,确省=1 
2000
VARCHAR2 Varchar, String
 NVARCHAR2 
可变字符串
民族语言字符集
 0-32767
4000 
4000
LONG   变长字符串  0->214748364732,767字节
DATE  日期型 公元前4712年1月1日至
公元后4712年12月31日
 
BOOLEAN  布尔型  TRUE,FALSE,NULL不使用
ROWID  存放数据库行号  
UROWID  通用行标识符,字符类型  

转换

TO_NUMBER()
TO_CHAR()
TO_DATE()


b> 自定义类型
i> 基本类型
TYPE record_type IS RECORD(
  name VARCHAR2(20), 
  address VARCHAR2(20)
);
rec record_type;
ii> 列类型%TYPE
TYPE record_type IS RECORD(
  T_no emp.empno%TYPE,
  T_sal emp.sal%TYPE
); 
rec record_type;
iii> 行类型%ROWTYPE
rec emp%ROWTYPE; 

3,运算符
符号意义
加号
减号
乘号
除号
:= 赋值号
=>  关系号
.. 范围运算符
|| 字符连接符
 等于
!= 不等于
<  小于
>  大于
<=  小于或等于
>= 大于或等于
AND 逻辑与
OR  逻辑或
NOT 取反
IS NULL 是否空值
BETWEEN是否介于两者
IN 是否在一列值中

4,控制语句
1>IF语句

IF <布尔表达式> THEN 
	PL/SQL 和 SQL语句; 
ELSIF <布尔表达式> THEN 
	PL/SQL 和 SQL语句;
ELSE 
	其它语句;
END IF;

2>CASE语句
CASE selector
	WHEN expression1 THEN result1
	WHEN expression2 THEN result2 
	[ELSE resultN+1]
END;

3>LOOP循环语句
LOOP 
	PL/SQL 和 SQL语句; 
	EXIT WHEN <布尔表达式>  /*条件满足,退出循环语句*/ 
END LOOP; 

4>WHILE循环语句
WHILE <布尔表达式> LOOP
	要执行的语句; 
END LOOP; 

5>FOR循环语句
FOR 循环计数器 IN [REVERSE] 下限..上限 LOOP
	要执行的语句; 
END LOOP;

6>GOTO语句
<<label>> 
GOTO label;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值