`
kingle85
  • 浏览: 12303 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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■作者:冯杰■出处:天极网
         

select基本上不属于DML,就是select.
DML怎么返回游标,望赐教.

-----------------

select是什么?dml是什么?select怎么就基本上不属于dml了?
希望不知道别瞎说,误导别人。

to Lz,
you said:
PL/SQL是一种过程化语言,属于第三代语言


但是在Orcale的官方网站我们可以看到 PL/SQL一样也是4GL,而不是你所说的3GL



PL/SQL is Oracle's procedural extension to SQL, the standard database access language. An advanced 4GL (fourth-generation programming language), PL/SQL offers seamless SQL access, tight integration with Oracle Database and associated tools, portability, security, and modern software engineering features such as data encapsulation, overloading, exception handling, and information hiding.

现在有2种说法
一种是有4类 DML DQL DDL DCL
还有一种是有3类 DML DDL DCL

大部分应该是3类,所以select 可以说是属于DML的一种吧

DML组可以细分为以下的几个语句:

SELECT:用于检索数据;

INSERT:用于增加数据到数据库;

UPDATE:用于从数据库中修改现存的数据

DELETE:用于从数据库中删除数据

分享到:
评论

相关推荐

    Oracle PL/SQL程序设计(第5版)(上下册)

    ### Oracle PL/SQL程序设计(第5版)(上下册)知识点概述 #### 一、PL/SQL编程基础 - **PL/SQL简介**:PL/SQL(Procedural Language for SQL)是Oracle数据库的一种内嵌式过程化语言,用于增强SQL的功能。它允许在SQL...

    Oracle PL/SQL编程及最佳实践

    Oracle PL/SQL 编程及最佳实践 Oracle PL/SQL 是一种高级编程语言,用于开发 Oracle 数据库中的存储过程、函数和触发器。PL/SQL language 提供了强大的编程能力,可以实现复杂的业务逻辑,并且与 Oracle 数据库紧密...

    Oracle PL/SQL guid

    ### Oracle PL/SQL 最佳实践概述 #### 一、引言 《Oracle PL/SQL 最佳实践》由 Steven Feuerstein 编写,O'Reilly 出版社于2001年4月出版,书号为0-596-00121-5,共计202页。本书旨在提供一个简洁易用的最佳实践...

    PL/SQL手册———oracle10g

    本手册主要介绍了Oracle 10g环境下PL/SQL的基本概念、语法和高级特性,旨在帮助初学者快速入门,并为有经验的开发者提供深入的技术指导。 #### 基础知识 ##### PL/SQL的结构 PL/SQL程序通常由以下三个部分组成: 1....

    PLSQL入门教程。pdf

    ### PLSQL入门教程知识点概述 #### 一、PL/SQL语言基础 **1.1 PL/SQL简介** PL/SQL(Procedural Language for SQL)是Oracle为增强其数据库功能而设计的一种过程化语言,它结合了SQL的数据操作能力与传统编程语言...

    oracle 10g 入门与实践 pdf pl/sql编程

    ### Oracle 10g 入门与实践及 PL/SQL 编程知识点解析 #### Oracle 10g 概述 Oracle 10g(Generation 10)是甲骨文公司于2004年发布的一个重要的数据库管理系统版本。它在Oracle 9i的基础上进行了大量的改进和技术...

    Oracle-PL-SQL入门教程(经典)

    ### Oracle-PL/SQL 入门教程精要 #### SQL语言概述 - **定义与功能**:SQL(Structured Query Language,结构化查询语言)是一种专为数据库设计的标准计算机语言,主要用于管理和操作数据库中的数据。根据ANSI...

    oracle plsql

    "Oracle从入门到精通第1章.ppt"可能是一个逐步学习Oracle PL/SQL的教程,从基础概念到实际应用,帮助初学者快速上手。 总之,Oracle PL/SQL是数据库开发中的重要工具,掌握了它,你就能更有效地管理和操作Oracle...

    Oracle9i/10g:SQL入门

    本电子图书《Oracle9i/10g:SQL入门》旨在帮助初学者快速理解并应用SQL在Oracle数据库中的操作。 一、SQL概述 SQL,结构化查询语言,是用于管理和处理关系数据库的标准语言。它包括数据查询、数据更新、数据插入和...

    McLaughlin, Michael Oracle Database 12c PL-SQL programming

    根据提供的文件信息,我们可以归纳出以下关于《Oracle Database 12c PL/SQL Programming》的知识点: ### 一、书籍基本信息 - **书名**:《Oracle Database 12c PL/SQL Programming》 - **作者**:Michael ...

    精通Oracle.10g.Pl.SQL编程

    《精通Oracle 10g PL/SQL编程》是一本内容详实、覆盖全面的指南,无论是对于想要入门的初学者还是希望进一步提升技能的中级用户而言,都极具参考价值。通过本书的学习,读者将能够熟练地运用PL/SQL编程技术,高效地...

    Oracle8i_9i 数据库基础_2

    Oracle PL/SQL是Oracle数据库系统中的一个强大编程语言,它结合了SQL的查询能力与过程式编程语言的特点,使得数据库管理、数据处理和应用程序开发更为高效。本篇将深入介绍Oracle PL/SQL的基础知识,包括其概念、...

    Oracle入门

    #### 一、PL/SQL概述 PL/SQL(Procedural Language for SQL)是Oracle公司为SQL语言提供的一种增强型编程语言,它结合了SQL的强大功能和传统过程化语言的灵活性。自Oracle 6版本开始,PL/SQL就被紧密集成到Oracle...

    pl_sql.pdf

    《PL/SQL 用户指南与参考》是一本全面介绍 PL/SQL 的权威著作,无论是对于想要入门的初学者还是希望深入了解高级特性的专业人士来说,都是一本不可或缺的参考书。通过学习本书,读者不仅可以掌握 PL/SQL 的基础知识...

    ORACLE入门基础,本地动态SQL执行语句

    ### ORACLE 入门基础:本地动态 SQL 执行语句 #### 一、概述 ...以上内容为 Oracle 入门基础中关于本地动态 SQL 执行语句、PL/SQL 数据类型等方面的知识点进行了详细介绍。希望对初学者有所帮助。

    Oracle_PL-SQL入门教程

    ### Oracle PL/SQL 入门教程关键知识点解析 #### 一、SQL 语言概述与基本概念 - **SQL 的含义**:SQL 是 Structured Query Language(结构化查询语言)的缩写,是一种用于管理和处理关系数据库的标准语言。 - **...

    ORACLE SQL入门与实战经典

    根据所提供的文件信息,无法提供具体的Oracle ...以上是对Oracle SQL入门和实战可能涉及知识点的概述。由于正文中没有提供具体的内容,无法提供更深入的分析。希望这可以为Oracle SQL的学习者提供一个全面的入门指南。

Global site tag (gtag.js) - Google Analytics