PL-SQL

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PL-SQL相关的知识,希望对你有一定的参考价值。

目标:

  1.理解PL/SQL组成及体系结构

  2.了解变量及其用法

  3.使用控制语句进行编程

  4.掌握游标的基本原理,理解游标的工作过程和分类

  5.会创建动态sql语句

  6.能够使用异常处理问题

 

1.PL/SQL

PL(过程语言)SQL(结构化查询语言)结合而成的编程语言,下面需要讲:变量和类型、控制语句、子程序和函数、对象类型和方法。

原理:用户发送PL/SQL块发给Oracle服务器,由服务器中的PL/SQL引擎进行判断,是过程语句就由过程语句执行器来执行,SQL语句就由SQL语句执行器来执行。

组成:分为三部分(声明部分、可执行部分、异常处理部分)

语法:

[declare 
  -- Local variables here
  i integer;]
begin
[Exception
  hanlers
]
end;

 

2.声明部分:

这里能使用的数据类型包括:

  标量类型:数字、字符、布尔、日期时间

  LOB类型:BFILE、BLOB、CLOB、NCLOB

  属性类型:%TYPE、%ROWTYPE

v_name varchar2(20):=张三;
v_sal number default 1000;
c_rate constant number(4,3):=0.037;
v_income number(10,3);
v_name teacher.tname%type;

注:常量为constant

对变量进行赋值:

begin
  select tname,tcal into v_name,v_sal from teacher where no=1004;
   dbms_output.put_line(v_name);//输出语句
end;

 

3.控制语句结构

条件控制:if、case

循环控制:loop、while、for

顺序控制:null、goto

//1.if语句
if  <布尔表达式> then
elsif <布尔表达式>  then
else
end    if;

//2.case语句
case 条件表达式
when  结果1    then  语句段1
when  结果2     then 语句段2
else    语句段
end case;

 

//3.loop循环语句
loop
    要执行的语句
exit when <条件语句>
end loop;

//4.while语句
while <布尔表达式> loop
    要执行的语句;
end loop;

//5.for 循环
for 循环计数器 in [reverse] 下限..上限 loop
    要执行语句;
end loop;

 

4.游标的使用

什么是游标:游标是系统为用户开设的一个数据缓冲区,存放sql语句的执行结果,每个游标区都有一个名字。用户,可以通过游标逐一获取记录。

游标类型:静态游标(编译是知道其select语句的游标)、动态游标(运行时动态决定执行何种查询)

 

声明游标:cursor cursor_name is query_sql;

打开游标: open cursor_name;

提取游标: fetch cursor_name into variable_list;

(使用fetch语句实现对游标内容的读取,variable_list必须从游标提取的结果集类型相同)

关闭游标:close cursor_name;

 

游标的属性:

%fount:用于检验游标是否成功,一般在fetch语句前使用,当游标按照条件查询出一条记录时,返回true.

%isopen:用于判断游标是否处于打开状态,尝试打开一个已经打开或者已经关闭的游标,会报错

%notfound:当按照条件无法查询到记录时,会返回ture.

%rowcount:循环执行游标读取数据时,返回检索出的记录数据行数

 








以上是关于PL-SQL的主要内容,如果未能解决你的问题,请参考以下文章

处理PL-SQL异常并继续循环

将 PL-SQL 转换为 SQL Server

从关键字在 PL-SQL 中未找到预期的位置

PL-SQL:ORA-00904 - 标识符无效 - Select and Pivot 子句中的列

如何在 PL-SQL 中舍入数字?

通过 ODP 将记录从 pl-sql 传递到 C#