PL\SQL编程

PL/SQL 是一种可移植的高性能事务处理语言.
PL/SQL引擎留在Oracle服务器中.
PL/SQL快由声明部分,可执行部分和错误处理部分组成.
PL/SQL数据类型包括标量数据类型,LOB数据类型和属性类型.
PL/SQL程序可通过控制结构命令执行的流程.
PL/SQL使用一次增强程序的健壮性,包含预定义异常和用户自定义异常.
游标是在PL/SQL中构建的用来查询数据,获取记录集合的指针
游标类型包括隐式游标,显示游标和REF游标.
显式游标用于可得到多行结果的查询中,可以声明为带参数或不带参数两种类型.
循环游标用于简化处理游标中所有行的查询.
存储过程用户执行特定的任务.
什么是pl/sql:
PL/SQL是 Procedure Language & Structured Query LanguProcedure的缩写
是一种过程处理语言
PL/SQL是 ORACLE系统的核心语言,ORACLE的许多部件都是由 PL/SQL编写的
PL/SQL的好处: PL/SQL在数据库服务器上运行,节约网络带宽,在数据库端运行效率更高
PL/SQL块:
PL/SQL程序由三个块组成:声明部分,执行部分,异常处理部分

PL/SQL程序的结构如下:
在这里插入图片描述
1.PL/SQL变量声明:

变量声明所要做的主要工作:赋予变量适当的名称,正确的数据类型,控制变量的作用范围。

变量命名规则:由字母开头,可以包含数字,下划线(_),$,#等,不区分大小写,不可以是系统关键字。

一个简单的PL/SQL变量声明的例子如下:

declare

x varchar2(10);

begin

x:=’This is x……’; --为变量x赋值,赋值符号为(:=)

DBMS_output.put_line(‘x的值为:’|| x); --在命令行控制台打印输出变量x的值

end;

/ --执行该PL/SQL程序块

3.PL/SQL中的分支语句:

PL/SQL中有两种分支语句:if分支和case分支。

(1).if分支:

if …… then

   ……

elsif …… then --注意Oracle中的elseif写法为(“elsif”),比较特殊

……

else

……

end if;

(2).case分支:

case

when …… then ……

when …… then ……

else ……

end case;

4.PL/SQL中的循环:

PL/SQL中有三种循环:基本循环,while循环和for循环:

(1).基本循环(loop):

loop

……

end loop;

(2).While循环:

while expression loop

……

end loop;

(3).for循环:

for counter in[reverse] start_value … end_value loop --注意:reverse是从大到小,默认是从小 --到大。start_value和end_value之间是两个点(…)

……

end loop;

注意:若想要在PL/SQL循环中跳出循环,可以使用以下两种方法:

a. if …… then

   exit;

end if;

b.exit when ……;

5.PL/SQL for循环的简单例子:

设置Oracle控制台屏幕输出命令:set serveroutput on.

PL/SQL for循环的简单例子:

begin

for i in 1…5 loop

DBMS_output.put_line(‘i=’|| i);

end loop;

end;

/

6.PL/SQL中支持goto跳转语句:

在很多编程语言中,goto语句都不支持或者不推荐使用,在PL/SQL中是支持goto跳转的,其使用方法如下:

declare

x number;

begin

x:=0;

<<repeat_loop>> --goto跳转标记

x:=x+1;

DBMS_output.put_line(‘x=’||x);

if x < 3 then

goto repeat_loop; --程序跳转到goto跳转标记处

end if;

end;

/

7.PL/SQL中的异常处理:

语法:exception

when …… then

……

例子如下:

exception

when no_data_found then --oracle系统异常

DBMS_output.put_line(‘自定义异常信息’);

注意:PL/SQL异常必须在begin和end之间使用。

8.PL/SQL自定义异常:

PL/SQL自定义异常很简单,要使用自定义异常必须显示抛出自定义异常,例子如下:

declare

test varchar2(20);

e exception; --声明自定义异常变量

begin

select ename into test from emp where empno = ‘……’;

if test <> ‘KING’ then

raise e; --显示抛出自定义异常

end if;

DBMS_output.put_line(‘ename=’||test);

exception

when e then

DBMS_output.put_line(‘自定义异常信息’);

end;

/
2.隐式游标:

隐式游标不需要在declare块中先是声明定义,也不需要手动打开和关闭,一个简单的隐式游标的例子如下:

begin

for cur in (select ename from emp) loop --此处的cur就是隐式游标

DBMS_output.put_line(‘ename=’ || cur.ename);

end loop;

end;

/

13.存储过程:

存储过程是一组实现特定功能的PL/SQL语句块,被数据库编译编译以提高效率。

(1).创建存储过程的语法:

create [or replace] procedure 存储过程名

[(param1 [{in | out | in out}])] 参数类型1, --in是输入参数,out是输出参数

[(param2 [{in | out | in out}])] 参数类型2, – in out是输入输出参数,不指定时默认是in

……

is | as

……

begin

存储过程体

end;

/

注意:当存储过程编译出错时,可以使用”show errors procedure 存储过程名”来显示错误信息。

©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页