一、PL/SQL
Procedure Language/SQL是一门编程语言,Oracle公司对SQL进行了扩展,扩展后的SQL,就叫PL/SQL,功能更强大,面向过程语言,模块化编程语言,用于开发基于数据库的应用程序。下面关于PL/SQL编程基础主要介绍两点PL/SQL程序块于PL/SQL语句。
1、PL/SQL程序块
PL/SQL程序的基本单元,按照指定的方式,进行定义的一段程序。
匿名块
不能被其他程序调用
可以临时使用
匿名块的代码不会存储在数据库中
命名块
触发器
存储过程
函数
包
包体
有名字的程序块
可以重复调用
会被编译并存储在数据库中
子程序
命名块
有时候特指存储过程和函数
关于匿名块介绍
语法: [declare] --定义部分:定义变量
begin --执行部分:sql语句、pl/sql块
[exception] --异常处理
end; --块结束标记
定义部分:用于定义常量、变量、游标、异常、数据类型
执行部分:实现应用模块功能,包含了要执行的PL/SQL语句和SQL语句
异常处理:处理执行部分可能出现的运行错误
begin
dbms_output.put_line('hello world!');
end;
PL/SQL中 ';'只表示语句的结束,运行需要输入'/'
set serveroutput on; 默认输出关闭,如需输出结果,需要手动设置开启
dbms_output Oracle提供的系统包
put_line是dbms_output包下的过程,用于输出字符串信息
PL/SQL程序块可以使用Oracle提供的SQL函数
关于变量和常量介绍
定义变量或常量语法:
变量名 [constant] 数据类型 [not null] [:= | default 表达式]
:= 赋值运算符
constant 表示定义的是常量,必须对它初始化
not null 用于指定变量不能为null,声明为not null的变量必须有初始化赋值
2、PL/SQL编程基础
具有特殊含义的符号
算术运算符
+ - * / **(幂运算符)
比较(关系)运算符
> >= < <=
不等于:!= <> ^=
等于:=
is null is not null
like
between...and...
in()
逻辑运算符
and or not
赋值运算符
:=
字符串连接符
||
语句终止符
;
双引号变量符
“变量名” 常用在用关键字定义变量名或变量名含有空格等情况时
注释符
--单行注释
/*
*多行注释
*/
范围操作符
.. 1..10 1到10
属性提示符
% %type %rowtype
标识符
可用于所有需要起名字的地方
直接写,要以英文字母开头
如果不以英文字母开头,要以双引号引起来
标识符能直接使用的字符大小写英文字母、数字、_ 、$、#,
如果要包含其他的字符, 则必须用双引号变量符,
不能直接是oracle关键字,如果是,必须用双引号变量符
最大长度为30个字符
文本(字面量)
能直接写的值
数字文本
整数、浮点数、科学计数法 5E6 → 5×10^6、幂操作 5**2 → 5^2
字符文本
用单引号引起来的单个字符
字符串文本
用单引号引起来的两个或两个以上的字符
字符串中’‘代表一个普通字符’
布尔文本
true false
日期时间文本
用字符串表示的
日期字符串必须符合oracle对时间的默认显示格式‘dd-mon-yy’
块的嵌套
PL/SQL块可以嵌套,嵌套层次没有限制
declare
v_name varchar2(30) := '外层块';
begin
declare
v_name varchar2(30) :='内层块';
begin
dbms_output.put_line(v_name);