您的位置:首页 > 数据库 > Oracle

Oracle--PL/SQL、系统内置函数

2018-04-02 20:51 453 查看
一、PL/SQL
PL/SQL(Procedural Language/SQL)是一种过程化语言,PL/SQL是Oracle的专用语言,它是对标准SQL语言的扩展,它允许在其内部嵌套普通的SQL语句,也可以定义变量和控制程序的执行流程,这样就将SQL语句的数据操纵和查询能力与PL/SQL的过程处理能力结合在一起了。

1、PL/SQL程序块
标准PL/SQL语法如下:[DECLARE] --声明部分,可选

BEGIN --执行部分,必须

[EXCEPTION] --异常处理部分,可选

END
2、定义变量和常量
(1)定义变量
变量是指其值在程序运行过程中可以改变的数据存储结构,定义变量必须的元素就是变量名和数据类型,另外还有可选择的初始值,其标准语法格式如下:
<变量名> <数据类型> [(长度):=<初始值>];

(2)定义常量
常量是指其值在程序运行过程中不可改变的数据存储结构,定义常量必须的元素包括常量名、数据类型、常量值和constant关键字,其标准语法格式如下:
<常量名> constant <数据类型>:=<常量值>;

3、基本数据类型
数值类型主要包括NUMBER、PLS_INTEGER和BINARY_INTEGER三种基本类型。其中,NUMBER类型的变量可以存储整数或浮点数;而BINARY_INTEGER或PLS_INTEGER类型的变量只存储整数
number(m) //m指总的位数
number(m,n) //m指总的位数,n指小数位数4、字符类型
字符类型主要包括VARCHAR2、CHAR、LONG、NCHAR和NVARCHAR2等。这些类型的变量用来存储字符串或字符数据。

5、日期类型
日期类型只有一个种——即DATE类型,用来存储日期和时间信息,DATE类型的存储空间是7个字节,分别使用一个字节存储世纪、年、月、天、小时、分钟和秒。

6、布尔类型
布尔类型也只有一种——即BOOLEAN,主要用于程序的流程控制和业务逻辑判断,其变量值可以是TRUE、FALSE或NULL中的一种。

7、特殊类型
(1)%type
       使用%type关键字可以声明一个与指定列名称相同的数据类型,它通常紧跟在指定列名的后面
set serveroutput on
declare
var_ename emp.ename%type;
var_job emp.job%type;
begin
select ename,job into var_ename,var_job from emp where empno=7369;
dbms_output.put_line('姓名:'||var_ename||'职位:'||var_job);
end;
/(2)record
    record类型也称作“记录类型”,使用该类型的变量可以存储由多个列值组成的一行数据。在声明记录类型变量之前,首先需要定义记录类型,然后才可以声明记录类型的变量。记录类型是一种结构化的数据类型,它使用type语句进行定义,在记录类型的定义结构中包含成员变量及其数据类型,其语法格式如下:

type record_type is record
(
var_member1 data_type [not null] [:=default_value],

var_membern data_type [not null] [:=default_value])
declare
type emp_record is record(
var_ename emp.ename%type,
var_job emp.job%type

);
emp_info emp_record;
begin
select ename,job into emp_info from emp where empno=7369;
dbms_output.put_line('姓名:'||emp_info.var_ename||'职位:'||emp_info.var_job);
end;
/
(3)%rowtype
       %rowtype类型的变量结合了“%type类型”和record类型变量的优点,它可以根据数据表中行的结构定义一种特殊的数据类型,用来存储从数据表中检索到的一行数据。它的语法形式很简单,如下所示。
rowVar_name table_name%rowtype;
declare
rowVar_emp emp%rowtype;
begin
select * into rowVar_emp from emp where empno=7369;
dbms_output.put_line('姓名:'||rowVar_emp.ename);
end;
/8、选择语句
(1)if...then语句
  if…then语句是选择语句中最简单的一种形式,它只做一种情况或条件判断,其语法格式如下: if < condition_expression> then

plsql_sentence

end if;
begin
if age>65 then
dbms_output.put_line('可以申请退休');
else
dbms_output.put_line('不能申请退休');
end if;
end;
/
(2)if...then...elsif语句
语法格式如下:
if < condition_expression1 > then
plsql_sentence_1;
elsif < condition_expression2 > then
plsql_sentence_2;

else
plsql_sentence_n;
end if;
declare
month int:=6;
begin
if month>=1 and month<=3 then
dbms_output.put_line('春暖花开');
elsif month>=4 and month<=6 then
dbms_output.put_line('烈日炎炎');
elsif month>=4 and month<=6 then
dbms_output.put_line('秋高气爽');
else
dbms_output.put_line('白雪皑皑');
end if;
end;
/
(3)if...then...else语句
    在编写程序的过程中,if…then…else语句是最常用到的一种选择语句,它可以实现判断两种情况,只要if后面的条件表达式为false,程序就会执行else语句下面的PL/SQL语句。其语法格式如下:
if < condition_expression> then
plsql_sentence1;
else
plsql_sentence2;
end if;
declare
age number:=75;
begin if age>65 then dbms_output.put_line('可以申请退休'); else dbms_output.put_line('不能申请退休'); end if; end; /
9、循环结构
(1)loop语句(先执行一次循环,再判断)
loop

循环执行的语句块;

exit when 循环结束条件;

循环结束条件修改;

end loop;
(2)while...loop语句while(循环条件) loop

循环执行的语句块;

循环结束条件修改;

end loop;
(3)for语句
   for语句有一个循环计数器,通过这个循环计数器来控制循环执行的次数。该计数器可以从小到大进行记录,也可以相反,从大到小进行记录。另外,该计数器值的合法性由上限值和下限值控制,若计数器值在上限值和下限值的范围内,则程序执行循环;否则,终止循环,其语法格式如下。
for variable_ counter_name in [reverse] lower_limit..upper_limit loop

plsql_sentence;

end loop;10、选择和跳转语句
       在case关键字的后面有一个选择器,它通常是一个变量,程序就从这个选择器开始执行,接下来是when子句,并且在when关键字的后面是一个表达式,程序将根据选择器的值去匹配每个when子句中的表达式的值,从而实现执行不同的PL/SQL语句,其语法格式如下:
case < selector>
when <expression_1> then plsql_sentence_1;
when <expression_2> then plsql_sentence_2;

when <expression_n> then plsql_sentence_n;
[else plsql_sentence;]
end case;
二、系统内置函数
1、字符类函数
 ASCII(c)函数   将字符转换为ASCII码

 CHR(i)函数           将ASCII码转换为字符

CONCAT(s1,s2)函数连接字符串
INITCAP(s) 函数   将每个单词的首字母大写

2、数字类函数



3、日期和时间类函数



4、转换类函数



5、聚集类函数

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: