ORACLE数据库笔记之PL/SQL

PL/SQL

PL/SQL是一种块结构的语言,它是将一组语句放在一个块中,一次性发送给服务器。它是结合Oracle过程语言和结构化查询语言的一种扩展语言

PL/SQL代码块的构成

declare --标记声明部分用来声明一些变量,位于begin之前

begin  --主程序体开始的标志

主程序体块;

[exception

 when 异常名 then 异常处理的方法;

when 异常名  then 异常处理的方法;

...

when other then 异常处理的方法;]

end;  --主程序题结束的标志

PL/SQL的常量和变量

变量的定义:

   declare --用来声明变量

    变量名  变量类型;                      --直接定义不赋初值

    变量名  变量类型:=变量值;         --定义变量并且赋初值

    变量名   匹配的数据库中原有的值;    --直接使用数据库中原有的值来匹配

    例(name person.name%type)

    (其中%type可以引用表中某列的类型作为变量的数据类型,也可以引用变量的类型作为新变量的数据类型

      %typeye也可以被换成是%ROWTYPE即引用数据库表中的一行作为变量的数据类型,也就是record类型,此变量就相当于是java中的一个对象,可以用‘.’来访问记录中的属性)

 常量的定义:

     常量名 constant   数据类型:=值;  --注意constant是必须的

(宿主常量:定义和普通的常量定义一样,使用时为:变量名 代码如下:)

var emp_name varchar(30); 
BEGIN
 SELECT ename INTO :emp_name FROM emp WHERE empno=7499; ②
 END;

 

PL/SQL中运算符

 

类型                     符号                              说明

赋值运算符             :=                              PL/SQL中的赋值

特殊字符                ||                                 字符串连接符

                           --                                 PL/SQL中的单行注释

                          /*,*/                              PL/SQL中的多行注释,多行注释不能嵌套

                         <<,>>                            标签分割符,只为了标示程序中的特殊位置

                         ..                                    范围操作符比如:1..5标示从1到5

算术运算符           + - * /                            基础算术运算符

                         **                                  求幂操作例子:2**3=8

关系运算符          > ,< ,>=, <=, =              基本关系运算符

                         <>,!=                             不等于运算符

逻辑运算符          and,or,not                         逻辑运算符

PL/SQL程序的主体执行部分

赋值语句:

(1)接收用户的输入:

 

declare
  n int; --定义一个变量来接收用户输入的数值
begin
   n:=&a; --弹出一个消息框进行输入
end;

 

(2)从查询结果中赋值

set serveroutput on;
declare
n number(4);
begin
   select empno into n from emp where='7369';
dnms_output.put(n);
end;

PL/SQL控制语句

(1)if 条件then 条件为真时执行      elsif … then      end if;

判断if正确则执行then,否则执行else(elsif为嵌套判断)

注意elsif,里面少一下e.

(2)Case  var  when ... then    when … then   end

有逻辑的从数值中做出选择

(3)Loop     exit    end loop

循环控制,用判断语句执行exit

(4)Loop       exit when …        end loop

同上,当when为真时执行exit

(5)while 条件 loop     循环体    end loop

当while为真时循环

(6)for  循环变量  in  [rerverse意思是反转即从上限想下限循环]  循环下限..循环管上限  loop    循环体    end loop

已知循环次数的循环

pl/sql中的异常
1)常见的异常:
异常 含义
access_into_null 未初始化对象
case_not_found case中选项与用户输入不匹配
collection_is_null 给尚未初始化的表或者数值进行赋值
cursor_already_open 重新打开已经打开的游标
dup_val_on_index 重复值存储在唯一索引的数据中
invalid_cursor 执行非法的游标
invalid_number 字符串转换为数字
no_data_found 没有查找到请求的行
too_many_rows 返回多行
value_error 大小限制
zero_divide 以零做除数
(2)自定义异常
在declare中定义异常形式为:异常名 exception
自定义的异常需要触发,所以在发生可能发生异常的地方写raise 异常名
异常捕获
declafe
  myexception exception;
   myempno  number;
begin
   select empno into myempno from emp where empno='1234';
   if myempno=null then
      raise myexception;
exception
     when myexception then
          dbms_output.put_line('');
    when others then
         dbms_output.put_line('');
end;

(3)生抛异常
raise_application_error(error_number,error_message,[keep_error]);

 

 

 

 

 

 

 

 

 

                                               

posted @ 2015-09-14 21:35  夏天的薰衣草  阅读(198)  评论(0编辑  收藏  举报