[转 海鸥航迹]Oracle PL/SQL入门的慨述

Oracle PL/SQL入门的慨述

**一、PL/SQL出现的目的

**  结构化查询语言(Structured Query
Language,简称SQL)是用来做客关系项目数据库一种植通用语言,它属于第四代语言(4GL),其行特点是免过程化,即决不指明执行之具体方法和路,而是大概的调用相应语句来一直获得结果即可。显然,这种不体贴外实现细节的语言对于开发者来说具有庞大的惠及。
然而,对于小复杂的业务流程又要求相应的先后来叙述,那么4GL就稍微力不从心了。PL/SQL的出现正是以解决当时等同题目,PL/SQL是一模一样栽过程化语言,属于第三代表语言,它同C,C++,Java等语言同样体贴入微被处理细节,因此可以用来兑现比较复杂的事务逻辑。
  本教程分两组成部分,第一组成部分关键针对PL/SQL的编程基础进行座谈,第二有的构成一个案例来教学PL/SQL编程。希望读者读本文后会针对PL/SQL编程有一个整体上之认识,为后来深入PL/SQL编程打下一个基础。

  老二、PL/SQL编程基础
  掌握一山头编程语言首要是要询问该中心的语法结构,即程序结构、数据类型、控制结构以及对应的内嵌函数(或编程接口)。

  1、PL/SQL程序结构
  PL/SQL程序还是坐块(block)为主导单位。如下所示为平段子完整的PL/SQL块:

/*声明部分,以declare开头*/
declare
v_id integer;
v_name varchar(20);
cursor c_emp is select * from employee where emp_id=3;
/*执行部分,以begin开头*/
begin
 open c_emp;             –打开游标
 loop
  fetch c_emp into v_id,v_name;  –从游标取数据
  exit when c_emp%notfound ;
 end loop ;
close c_emp;           –关闭游标
dbms_output.PUT_LINE(v_name);
/*异常处理部分,以exception开始*/
exception
 when no_data_found then
  dbms_output.PUT_LINE(‘没有数据’);
end ;

  从点的PL/SQL程序段看出,整个PL/SQL块分割三片:声明部分(用declare开头)、执行有(以begin开头)和死处理局部(以exception开头)。其中实行有是须的,其他两单部分可选。无论PL/SQL程序段的代码量有差不多好,其核心构造即是由当时三片段组成。

  2、变量声明和赋值
  PL/SQL主要用以数据库编程,所以那个独具数据类型跟oracle数据库里之字段类型是逐一对应的,大体分为数字型、布尔型、字符型和日期型。为便利了解后面的例程,这里大概介绍两种常用数据类型:number、varchar2。

   number

  用来囤整数和浮点数。范围为1E-130 ~10E125,其动语法为:

number[(precision, scale)]

  其中(precision,
scale)是可选的,precision表示拥有数字的个数,scale表示有点数沾右侧数字的个数。

   varchar2

  用来囤积变长的字符串,其行使语法为:

varchar2[(size)]

  其中size为可选,表示该字符串所能积存的极其可怜长。

  在PL/SQL中声称变量和任何语言不绝雷同,它利用打右边为左的点子宣示,比如声明一个number类型的变量v_id,那那个款式应为:

v_id number;

  如果给地方的v_id变量赋值,不克因此”=”应该为此”:=”,即形式呢:

v_id :=5;

3、控制结构

  PL/SQL程序段被出三栽程序结构:条件结构、循环结构与一一结构。

   准结构

  以及任何语言完全类似,语法结构如下:

if condition then
statement1
else
statement2
end if ;

   循环结构

  这同组织及其余语言不极端一致,在PL/SQL程序中出三栽循环结构:

a. loop … end loop;
b. while condition loop … end loop;
c. for variable in low_bound . . upper_bound loop … end loop;

  其中的“…”代表循环体。

   梯次结构

  实际就是是goto的用,不过从程序控制的角度来拘禁,尽量少用goto可以让程序结构更加的明明白白。

  4、SQL基本命令

  PL/SQL用的数据库操作语言还是冲SQL的,所以熟悉SQL是开展PL/SQL编程的根底。表1-1乎SQL语言的分类。

  表1-1 SQL语言分类

类别 SQL语句
数据定义语言(DDL) Create ,Drop,Grant,Revoke, …
数据操纵语言(DML) Update,Insert,Delete, …
数据控制语言(DCL) Commit,Rollback,Savapoint, …
其他 Alter System,Connect,Allocate, …

  可以参照其他有关SQL语言的素材来询问实际的语法结构,这里就是未多废话了。
**三、过程与函数

**  PL/SQL中之长河和函数和其他语言的过程与函数的定义一样,都是以施行得之任务而组合在一起的语。过程无返回值,函数有返值。其语法结构为:
  过程:Create or replace procedure procname(参数列表) as
PL/SQL语句片

  函数:Create or replace function funcname(参数列表) return 返回值 as
PL/SQL语句片

  这里为了进一步方面的认证经过的下,下面被有一个演示:

  问题:假设来雷同布置表t1,有f1和f2两只字段,f1乎number类型,f2乎varchar2类型,然后往t1里描写少久记下,内容由定。

Create or replace procedure test_procedure as
V_f11 number :=1; /*声明变量并赋初值*/
V_f12 number :=2;
V_f21 varchar2(20) :=’first’;
V_f22 varchar2(20) :=’second’;
Begin
Insert into t1 values (V_f11, V_f21);
Insert into t1 values (V_f12, V_f22);
End test_procedure; /*test_procedure可以省略*/

  至此,test_procedure存储过程已经成功,然后通过编译后哪怕得以另外PL/SQL块或经过遭到调用了。由于函数和经过具有老非常之相似性,所以这里就不再另行了。

  四、游标
  这里特别提出游标的概念,是为它在PL/SQL的编程中充分之重大。其定义也:用游标来代替一个DML SQL操作返回的结果集。即当一个针对数据库的查询操作返回一组结果集时,用游标来标注这组结果集,以后通过对游标的操作来获取结果集中的数额信息。定义游标的语法结构如下:

cursor cursor_name is SQL语句;

  以本文第一段子代码中生出同样句话如下:

cursor c_emp is select * from employee where emp_id=3;

  其意义嵌ㄒ逡桓鲇伪阠_emp,其表示在employee表中所有emp_id字段为3的结果集。当需要操作该结果集时,必须做到三步:打开游标、使用fetch语句以游标里的数量取出、关闭游标。请参考本文第一段代码的注解理解游标操作的老三手续。

  五、其他概念

  PL/SQL中保证的定义充分重大,主要是对准同一组功能看似的长河和函数进行打包,类似于面向对象中之名字空间的定义。

  触发器是平等种植特殊之仓储过程,其调用者比较独特,是当起一定的波才受调用,主要用于多表之间的信通知。

  六、调试环境

  PL/SQL的调剂环境时可比多,除了Oracle自带有调试环境Sql*plus以外,本人推荐TOAD这个家伙,该工具用户界面友好,可以增长程序的编排效率。

  本文主要教学PL/SQL的根基部分,熟悉这有内容后可进行仓储过程的编制和下,对于增强数据库服务器端的实施效率非常有赞助。

原载:http://www.yesky.com/SoftChannel/72342371928965120/20040913/1853193.shtml 
            2004-09-13■作者:冯杰■出处:天极网
         

相关文章