第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 /
程序包体已创建。
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 /
程序包体已创建。
相关文章推荐
- C#高级编程(第7版)笔记--第3章对象与类型
- Practical Common Lisp学习笔记——之第3章
- 【算法导论学习笔记】第3章:函数的增长
- [Effective JavaScript 笔记]第3章:使用函数--个人总结
- ASP.NET 2.0高级编程学习笔记-第3章 应用程序和页面框架
- Python笔记第3章,模块和模块的常用方法,函数式编程yield,三元运算Lambda表达式,内置涵数,常用模块
- Essential c++阅读笔记-第3章 vs2010下vector的find方法排错
- 《C++ Primer(第5版)》学习笔记:第3章 字符串、向量和数组
- 【C++Primer学习笔记】第3章 标准库类型
- h3c 构建中小企业网络 实验手册 第3章 笔记
- 《分布式服务架构原理设计与实战》第3章系统容量评估性能保障笔记
- [Java编程思想-学习笔记]第3章 操作符
- C++Primer 第3章 学习笔记
- [学习笔记]C#高级编程(第3章)
- C++ Primer 学习笔记——第3章:标准库类型 vector
- oracle数据库----笔记1---PL/SQL基础5---子程序
- 【笔记】《WebGL编程指南》学习-第3章绘制和变换三角形(2-你好三角形))
- 深入C++对象模型学习笔记 第3章 Data 语意学
- 【C++ Primer学习笔记】第3章:标准库类型
- MongoDB学习12_MongoDB学习笔记之 第3章 MongoDB的Java驱动