您的位置:首页 > 数据库

第3章 PL/SQL基础 笔记

2012-05-14 17:58 127 查看
第3章 PL/SQL基础--2012-04-19

3.1 PL/SQK块简介

块(block)是PL/SQL的基本程序单元,编写PL/SQL程序实际就是编写PL/SQL块。要完成相对简单的应用功能,可能只需要编写一个PL/SQL块;而如果要实现复杂的应用功能,那么可能需要在一个PL/SQL块中嵌套其他PL/SQL块。

3.1.1 PL/SQL块结构

PL/SQL块由三个部分组成:定义部分、执行部分、例外处理部分。

其中,定义部分用于定义常量、变量、游标、例外、复杂数据类型等;

执行部分用于实现应用模块功能,该部分包含了要执行的PL/SQL语句和SQL语句;

例外处理部分用于处理执行部分可能出现的运行错误。

PL/SQL块的基本结构如下所示:

Declare--定义部分以Declare开始

定义部分---定义常量、变量、游标、例外、复杂数据类型

begin--执行部分以begin开始

执行部分---PL/SQL语句和SQL语句

Exception--例外处理部分以exception开始

例外处理部分---处理运行错误

end ; --PL/SQL块的结束标记

2012-04-23 pl/sql块的3个实例

declare v_ename varchar2(5);

begin

select ename into v_ename from emp where empno=&no;

dbms_output.put_line('雇员名:'||v_ename);

end;

select * from emp;

3.1.2 PL/SQL块分类

PL/SQL块划分为匿名块、命名块、子程序和触发器等四种类型

1.匿名块

匿名块是指没有名称的PL/SQL块,匿名块既可以内嵌到应用程序(Pro*c/c++)中,也可以在交互式环境(SQL*Plus)中直接使用。

declare v_avgsal number(6,2);

begin

select avg(sal) into v_avgsal from emp where deptno=&no;

dbms_output.put_line('平均工资:'||v_avgsal);

end;

2.命名块

命名块是指具有特定名称标识的PL/SQL块,命名块与匿名块非常类似,只不过在PL/SQL块前使用<<>>加以标记

*******2012-04-24

3.子程序

子程序包括过程、函数和包。

(1)过程

过程用于执行特定操作。

当建立过程时,既可以指定输入参数,也可以指定输出参数。

4.触发器

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

第3 章 PL/SQL基础 记录 2012-5-14 19:51

学习了本章,读者应该完成以下任务:

1.了解PL/SQL块的基本结构以及PL/SQL块的分类;

2.学会在PL/SQL块中定义使用变量;

3.学会在PL/SQL块中编写可执行语句;

4.了解编写PL/SQL代码的指导方针;

5.了解Oracle 10g的新特征--新数据类型Binary_float和Binary_double,以及指定字符串文本的新方法。

3.子程序包括过程、函数和包

(1)过程用于执行特定操作。

(2)函数用于返回特定数据。当建立函数时,在函数头部必须包含Returen子句,而在函数体内必须 要包含return语句返回数据。使用create

function命令建立函数,实例如下:

创建函数

create function heji3(name varchar2)

return number is

salary number(7,2);

begin

select sal*12+nvl(comm,0) into salary from emp

where lower(ename)=lower(name);

end;

/

由于函数有输出参数,使用sql*plus绑定变量存放输出结果;

var income number

call heji3('scott') into :income;

print income

income

------

2400

(3)包用于逻辑组合相关的过程和函数,它由包规范和包体两部分组成。包规范用于定义公用的常量、变量、过程和函数,在SQL*Plus中建立包规范可以使用create package 命令。

SQL> create package emp_pkg is

2 procedure update_sal(name varchar2,newsal number);

3 function income(name varchar2) return number;

4 end;

5 /

程序包已创建。

SQL> create package body emp_pkg is

2 procedure update_sal (name varchar2,newsal number)

3 is

4 begin

5 update emp set sal=newsal where lower(ename)=lower(name);

6 end;

7

8 function income(name varchar2) return number

9 is

10 salary number(7,2);

11 begin

12 select sal*12+nvl(comm,0) into salary from emp

13 where lower(ename)=lower(name);

14 end;

15 end;

16 /

程序包体已创建。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: