第3章 PL/SQL基础 笔记

来源:互联网 发布:droid4x mac 编辑:程序博客网 时间:2024/05/22 23:03

第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  /

程序包体已创建。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


 

 

原创粉丝点击