PL/SQL之块结构和组成元素 |
您所在的位置:网站首页 › 程序结构组成部分包括 › PL/SQL之块结构和组成元素 |
PL/SQL之基础
一 SQL与PL/SQL
1 PL/SQL概念 PL/SQL 是一种高级数据库程序设计语言,该语言 专门用于在各种环境下对 ORACLE 数据库进行访问 。由于该语言 集成于数据库服务器中 所以 PL/SQL 代码可以对数据进行快速高效的处理。 PL/SQL是对 SQL 语言存储过程语言的扩展 从 ORACLE6 以后, ORACLE 的 RDBMS 附带了 PL/SQL 。它现在已经成为一种 过程处理语言 ,简称 PL/SQL 。目前的 PL/SQL 包括两部分,一部分是数据库引擎部分;另一部分是可嵌入到许多产品(如 C 语言, JAVA 语言等)工具中的独立 引擎。可以将这两部分称为:数据库 PL/SQL 和工具PL/SQL 。两者的编程非常相似。都具有编程结构、语法和逻辑机制。工具 PL/SQL 另外还增加了用于支持工具(如 ORACLE Forms )的句法,如:在窗体上设置按钮等。 2 PL/SQL的好处 ① 有利于客户端/服务器环境应用的运行 对于客户服务器环境来说,真正的瓶颈是网络上。无论网络多快,只要客户端与服务器进行大量的数据交换。应用运行的效率自然就回受到影响。如果使用 PL/SQL 进行编程, 将这种具有大量数据处理的应用放在服务器端来执行。自然就省去了数据在网上的传输时间。 ② 适合于客户环境 PL/SQL由于分为数据库 PL/SQL 部分和工具 PL/SQL 。对于客户端来说, PL/SQL 可以嵌套到相应的工具中,客户端程序可以执行本地包含PL/SQL 部分,也可以向服务发 SQL 命令或激活服务器端的 PL/SQL 程序运行。 3 PL/SQL可用的SQL语句 PL/SQL 是 ORACLE 系统的核心语言,现在 ORACLE 的许多部件都是由 PL/SQL 写成 。在 PL/SQL 中 可以使用的 SQL 语句有:INSERT UPDATE DELETE SELECT INTO COMMIT ROLLBACK SAVEPOINT 。 提示:在PL/SQL 中只能用 SQL 语句中的 DML 部分,不能用 DDL 部分,如果要在 PL/SQL 中使用 DDL( 如CREATE table 等 的话,只能以动态的方式来使用。 ① ORACLE 的 PL/SQL 组件在对 PL/SQL 程序进行解释时,同时对在其所使用的表名、列名及数据类型进行检查。 ② PL/SQL 可以在 SQL*PLUS 中使用。 ③ PL/SQL 可以在高级语言中使用。 ④ PL/SQL 可以 在 ORACLE 的 开发工具中使用。 ⑤ 其它开发工具也可以调用 PL/SQL 编写的过程和函数,如 Power Builder 等都可以调用服务器端的PL/SQL 过程。 4 运行PL/SQL程序 PL/SQL 程序的运行是通过 ORACLE 中的一个引擎来进行的。这个引擎可能在 ORACLE 的服务器端,也可能在 ORACLE 应用开发的客户端。引擎执行 PL/SQL 中的过程性语句,然后将 SQL 语句发送给数据库服务器来执行。再将结果返回给执行端。 二 PL/SQL块结构和组成元素1 PL/SQL块结构 PL/SQL程序由三个块组成,即声明部分、执行部分、异常处理部分 PL/SQL块的结构如下: DECLARE /*声明部分 : 在此声明 PL/SQL 用到的变量 类型及游标,以及局部的存储过程和函数*/ BEGIN /* 执行部分 : 过程及 SQL 语句 , 即程序的主要部分*/ EXCEPTION /* 执行异常部分 : 错误处理*/ ENDPL/SQL块分为三类: (1)无名块:动态构造,只执行一次 (2)子程序 :存储在数据库中的 存储过程、函数 及包等。当在数据库上建立好后可以在其它程序中调用它们 (3)触发器 :当数据库发生操作时,会触发一些事件,从而自动执行相应的程序。 2 PL/SQL结构 (1)PL/SQL 块中可以包含子块; (2)子块可以位于 PL/SQL 中的任何部分; (3)子块也即 PL/SQL 中的一条命令; 3 标识符 PL/SQL程序设计中的标识符定义与 SQL 的标识符定义的要求相同。要求和限制有: (1) 标识符名不能超过 30 字符; (2) 第一个字符必须为字母; (3) 不分大小 写; (4) 不能用 减号 (5) 不能是 SQL 保留字。 提示:一般不要把变量名声明与表中字段名完全一样 如果这样可能得到不正确的结果 变量命名在 PL/SQL 中有特别的讲究,建议在系统的设计阶段就要求所有编程人员共同遵守一定的要求,使得整个系统的文档在规范上达到 要求。下面是 建议的命名方法 案例: ![]() ![]()
④ 可转换的类型赋值 CHAR 转换为 NUMBER使用TO_NUMBER 函数来完成字符到数字的转换,如: v_total := TO_NUMBER(‘100.0’) + sal; NUMBER 转换为 CHAR使用 TO_CHAR 函数可以实现数字到字符的转换,如: v_comm := TO_CHAR(‘123.45’) || ’元 ’ 字符转换为日期: 使用TO_DATE 函数可以实现 字符到日期的转换,如: v_date := TO_DATE(‘2001.07.03’,‘yyyy.mm.dd’); 日期转换为字符 使用TO_CHAR 函数可以实现日期到字符的转换,如: v_to_day := TO_CHAR(SYSDATE, ‘yyyy.mm.dd hh24:mi:ss’) ; ⑤ 变量作用范围及可见性 在PL/SQL 编程中,如果在变量的定义上没有做到统一的话,可能会隐藏一些危险的错误,这样的原因主要是变量的作用范围所致。与其它高级语言类似, PL/SQL 的变量作用范围特点是: 变量的作用范围是在你所引用的程序单元(块、子程序、包)内。即从声明变量开始到 该块的结束。 一个变量(标识)只能在你所引用的块内是可见的。 当一个变量超出了作用范围, PL/SQL 引擎就释放用来存放该变量的空间(因为它可能不用了)。 在子块中重新定义该变量后,它的作用仅在该块内。 ⑥ 注释 使用“–”进行单行注释 使用“/* */”进行单行和多行注释 ⑦ 案例显示 DECLARE v_ename VARCHAR2(20) := ‘Bill’; v_sal NUMBER(7,2) :=1234.56; v_deptno NUMBER(2) := 10; v_empno NUMBER(4) := 8888; BEGIN INSERT INTO emp ( empno, ename, JOB, sal, deptno , hiredate ) VALUES ( v_empno, v_ename, ‘Manager’, v_sal, v_deptno, TO_DATE(’1954.06.09’,’yyyy.mm.dd’) ); COMMIT; END; |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |