本系列笔记为本人过去学习所写,适合有一定数据库(sql server等)基础的读者,希望对初学者有所帮助。
1.变量的定义
简单数据类型: 与数据库中创建表定义字段有点类似,前面是变量名,后面是数据类型,比如 id number;
需要注意的是,所有变量的定义必须是在declare块中.
复合数据类型: 有两种:
1.v_ename emp.ename%type 表示将v_emp的类型定义为emp表中的ename字段类型,这种定
义方式可不需知道emp表中的字段具体的类型.
2.v_emp emp%rowtype 表示将emp表中的各个字段数据类型定义给v_emp
2.程序流程
顺序结构:所有程序都是以 begin开始 以end结束的,顺序结构就是从上到下,直接运行.
分支结构:基本语法如下:
①if 条件 then 执行的语句 end if;
②if 条件 then 执行的语句 elsif 条件 then 执行的语句 end if
在上两种结构中一般我们会在最后一个if执行语句后加上一个else分支作今后的扩展
用,可先用null;
③case 变量 when 常量 then 执行的语句 end case
④case when 条件 then 执行语句 end case
在上两种结构中一般我们会在最后一个执行语句后加上一个else语句,目的是防止case语
句中无条件匹配的情况
循环结构:
①先判断,再循环: while (条件) loop 循环块 end loop;
②先执行一次,再判断循环: loop 循环块 end loop,注意在循环块中需要我们自己定
义一个跳出循环的条件,当条件满足时通过exit;语句来跳出循环
③循环固定次数:for 变量名字 in 变量的起始和结束值(比如:1..100) loop 循环块
end loop;
3.异常处理
异常处理我们需要用到exception关键字,一般格式为:
exception when 处理类型 then 处理的方法
一般情况下,只要一个程序中可能会出现异常,那不管我们是否将所有可能的异常处理完,我们都需要在最后一个异常处理位置加上exception when others then XXX,目的是为了防止人为操作出现的漏掉的异常处理.
在异常处理的方法块中我们可以利用 sqlcode和sqlerrm 得到该异常的异常号,异常描述等信息.
自定义异常:raise_application_error(number,varchar2);其中number表示该异常的异常号,ORACLE允许用户定义的异常号范围为:-20001到-29999.varchar2表示对异常的描述,注意该定义方式并不是处理了异常,而是将异常抛出.
还有一种异常很容易出现,经常使用,但为了方便用户不去记忆异常号等信息,ORACLE公司将他们定义成了预定义异常,这些异常都有自己的异常名字,一般来说见名知意,很容易使用.
扩展与提升:
1.如何使用&和&&:目前看来除了在PL/SQL的测试窗口不能用以外,其他地方都能用,他们都会弹出一个可供用户输入的对话框,区别在于:每次运行的时候&都会要求输入,而&&只在第1次运行的时候要求输入.
2.伪列:有两种rowid和rownum,区别在于:rowid是显示该数据在磁盘上的位置,而rownum是显示在该数据库中的行号;
3.哑表dual:多用于计算,个人认为该表其实不存在,就像sql server中计算列一样不需要引用表,但这又是ORACLE在计算列时不可缺少的操作.
4.ORACLE中常见的函数:
①to_char(date,String),其中,date是一个日期类型的参数,String表示需要将date参数中的哪部分以字符串形式输出,比如:'yyyy'表示输出年份.注意该函数是将date类型转换为String类型.
②to_date(String,String),第一个字符串表示需要转换为date类型的字符串,比如'2005-01-03',第2个字符串参数表示转换成什么格式,比如'yyyy-mm-dd'表示年-月-日,两个字符串是一一对应的
③空值nvl函数,是很重要的函数之一:格式为nvl(name,value),表示如果所在字段name中的数据为null,则将他赋值为value的值,在数据库中null值有3个重要的特点:不能比较,不能运算,不能统计
④decode
背都写痛了,不过有收获就是很好的........