有些惭愧,距离第2次听课笔记远了。这一讲主要是关于函数,包,还有变量的解释。
1 函数和过程的区别
1)函数:返回特定值,通常是一个;
过程:执行特定操作
2)建立函数时:
在函数头须包含return子句
例如;
return number is
think_salary number(7,2)
在函数体也须包含return语句
return think_salary
2 案例:输入雇员的姓名,返回该雇员的年薪
create function sp_think(spName varchar2)
return number is
yearSal number(7,2);
begin
select sal*12+nvl(comm,0)*12 into yearSal from emp where ename=spName;
return yearSal;
end;
/
在sqlplus中调用:
var think number
call sp_think('SCOTT') into:think
print think
3 包
用于逻辑上组合过程和函数,由包头和包体组成,其中
包头:对过程或函数的声明
包体:实现包头中所声明的过程或函数
案例:
包头:
create package sp_think
is
procedure update_sal(name varchar2,newsal number);
function annual_income(name varchar2) return number;
end;
/
包体:
create package body sp_think is
procedure update_sal(name varchar2,newsal number)
is
begin
update emp set sal=newsal where ename=name;
end;
function annual_income(name varchar2)
return number is
annual_salary number;
begin
select sal*12+nvl(comm,0) into annual_salary from emp where ename=name;
return annual_salary;
end;
end;
/
4 如何调用包的过程或函数
调用自己创建的包时:
call sp_think.update_sal('SCOTT',1500);
调用其他方案的包时,如hr:
call hr.sp_think.update_sal('SCOTT',1500);
5 触发器
触发器是自动执行的过程
包含:
1)触发的事件:如DML语句
2)触发的操作:pl/sql块
作用:维护数据库的安全和一致性
6 变量
1)v_ename varchar2(10) -- :=为赋值号,如v_sal number(6,2):=5.8
2)用于存放多值的变量:
2.1) pl/sql记录:同c语言的结构体相似
案例:
declare
type think is record(name emp.ename%type,salary emp.sal%type)--name随ename的变而变
re_think think
begin
select ename,sal into think from emp where empno7788;
dbms_output.put_line('员工名:'||think.name);
end;
2.2)pl/sql表:同c语言的数组相似
案例:
declare
type think is table of emp.ename%type index by binary_integer;
-- 定义了一个pl/sql表类型,存放emp.ename%type,下标是正整数
ta_think think;
....
3) 游标变量:结果集的指针
案例:定义一个pl/sql块,可以输入部门号,显示该部门所有员工的姓名和工资
declare
type think_cursor is ref cursor;
water_cursor think_cursor;
v_ename emp.ename%type;
v_sal emp.sal%type;
begin
open water_cursor for select ename,sal from emp where deptno=&a;
loop
fetch water_cursor into v_ename,v_sal;
exit when water_cursor%notfound;
dbms_output.put_line('名字:'||v_ename||'工资:'||v_sal)
end loop
end;
分享到:
相关推荐
韩顺平玩转oracle视频教程笔记
韩顺平 玩转oracle第02讲 oralce安装.wmv 韩顺平 玩转oracle第02讲 oralce安装.wmv 韩顺平 玩转oracle第02讲 oralce安装.wmv 韩顺平 玩转oracle第02讲 oralce安装.wmv
韩顺平玩转Oracle实战教程笔记
韩顺平玩转oracle视频中记录的笔记文档。
韩顺平玩转oracle课件.txt ) 您可以上传小于50MB的文件韩顺平玩转oracle课件.txt )
韩顺平—玩转oracle视频教程笔记,包括了他的oracle视频教程的所有笔记,部分回顾上节课内容的文字已删除,保留的是每节课的所有完整笔记
韩顺平玩转oracle课件是对他讲的oracle视频内容的记录 使学习他的视频的人更容易掌握oracle
韩顺平 玩转oralce第3讲 oracle的基本使用 韩顺平 玩转oralce第3讲 oracle的基本使用
很不错,适合初级Oracle学习,查询比较方便
教程名称: 韩顺平 经典玩转Oracle视频课程该教程用循序渐进的手法和项目驱动的案例,由浅入深的讲解oracle的基础部分和高级部分。包括以下内容:(1)oracle基础介绍 (2)oralce安装(3)oracle的基本使用 (4)oracle...
韩顺平玩转oracle课件.pdf......................................
看完韩顺平老师的《玩转oracle》之后,个人整理的笔记,覆盖知识全面,希望对大家有所帮助。
韩顺平玩转oracle10g的课堂笔记加上ppt,让学员可以有一个更好的复习资料,与给教学人员一个参考备课资料!
2011韩顺平玩转oracle视频的笔记,
韩顺平玩转oracle视频教程笔记.doc
韩顺平玩转Oracle数据库的PPT
韩顺平 玩转oracle ppt ,内容详尽,带课上敲的sql语句。很好的教程!