不得不会的Oracle数据库知识点(四)

简介: 不得不会的Oracle数据库知识点(四)

一.使用PL/SQL


可用于创建存储过程,触发器,程序包,给SQL语句的执行添加程序逻辑。

支持SQL,在PL/SQL中可以使用:

数据操纵命令

事务控制命令

游标控制

SQL函数和SQL运算符

支持面向对象编程(OOP)

可移植性

更佳的性能,PL/SQL经过编译执行

分为三个部分:声明部分,可执行部分和异常处理部分

[declare
declarations]
begin
executable statements
[exception
handlers]
end;
复制代码

打开输出

set serverout on;
复制代码

二、游标管理


游标类型:隐式游标,显式游标,REF游标

REF游标用于处理运行时才能确定的动态SQL查询的结果

==========隐式游标==========

在PL/SQL中使用DML语句时自动创建隐式游标

隐式游标自动声明、打开和关闭,其名为SQL

隐式游标的属性:

%found                       SQL语句影响实质后返回true

%notfound                 SQL语句没有影响实质后返回true

%rowcount                SQL语句影响的行数

%isopen            游标是否打开,始终为false

示例:

begin
update user_tbl set score=score+5;
if SQL%found then
         dbms_output.put_line('数据被更改: '||SQL%rowcount);
elsif sql%notfound then
         dbms_output.put_line('没有找到数据!');
end if;
if SQL%isopen then
         dbms_output.put_line('Open');
else
         dbms_output.put_line('Close');
end if;
end;
复制代码

==========显式游标==========

在PL/SQL的声明部分定义查询,该查询可以返回多行:

声明游标、打开游标、 从游标中取回数据、关闭游标

声明游标完成两个任务:

给游标命名

将一个查询与游标关联

cursor cursor_name is select statement;
复制代码

打开游标:

open cursor_name;
复制代码

取数据:  

fetch cursor_name into record_list;
复制代码

关闭游标:      

close cursor_name;
复制代码

显式游标的属性:

%found                      执行最后一条fetch语句成功返回行时为true

%notfound                 执行最后一条fetch语句未能返回行时为true

%rowcount                返回到目前为止游标提取的行数

%isopen            游标是否打开

示例:

带参的显式游标

declare
users user_tbl%rowtype;
cursor boys_cur(sexParam varchar2)
is select * from user_tbl where sex=sexParam;
begin
open boys_cur('&sex');
loop
fetch boys_cur into users;
exit when boys_cur%notfound;
dbms_output.put_line(users.user_name||'  '||users.password);
dbms_output.put_line(boys_cur%rowcount);
end loop;
close boys_cur;
end;
复制代码

循环游标

declare
cursor user_cur is select * from user_tbl;
begin
for username in user_cur loop
         dbms_output.put_line(username.user_name||'  '||username.sex);
end loop;
end;
复制代码

REF游标:

REF游标和游标变量用于处理运行时动态执行的SQL查询

创建游标变量的步骤:

a、 声明REF游标类型

b、 声明REF游标类型的变量

声明类型的语法

Type ref_cursor_name is ref cursor [return return_type];
复制代码

打开游标变量的语法

Open cursor_name for select_statement;
复制代码

声明强类型的游标

declare
type ref_cur is ref cursor return user_tbl%rowtype;
users_cur ref_cur;
复制代码

声明弱类型的游标

declare
type ref_cur is ref cursor;
users_cur ref_cur;
复制代码

三、子程序


子程序分为:存储过程和函数,它是命名的PL/SQL块,编译并存储在数据库中。

子程序的各个部分:声明部分,可执行部分,异常处理部分。

过程----执行某些操作

函数----执行操作并返回值

==========存储过程==========

创建过程的语法:

create or replace procedure
proce_name (parameter_list)
is|as
local variable declaration
begin
executable statements
exception
exception_handlers
end proce_name;
复制代码

过程参数的三种模式:

In----用于接收调用的值,默认的参数模式

Out----用于向调用程序返回值

In out----用于接收调用程序的值,并向调用程序返回更新的值

执行过程的语法:

Execute proce_name(parameter_list);
复制代码

Declare
Variable var_list;
Begin
Proce_name(var_list);
End;
复制代码

将过程执行的权限授予其他用户:

Grant execute on proce_name to scott;
Grant execute on proce_name to public;
复制代码

删除存储过程:

Drop procedure proce_name;
复制代码

==========函数==========

创建函数的语法:

Create or replace function
Fun_name (parameter_list)
Return datatype is|as
Local declarations
Begin
Executable statements;
Return result;
Exception
Exce_handlers;
End;
复制代码

函数只能接收in参数,不能接受out或in out参数,形参不能是PL/SQL类型

函数的返回类型也必须是数据库类型

访问函数的方式:

a、 使用PL/SQL块

b、使用SQL语句

Select fun_name(parameter_list) from dual;


作者:zhulin1028

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

相关文章
|
1月前
|
存储 Oracle 关系型数据库
数据库数据恢复—ORACLE常见故障的数据恢复方案
Oracle数据库常见故障表现: 1、ORACLE数据库无法启动或无法正常工作。 2、ORACLE ASM存储破坏。 3、ORACLE数据文件丢失。 4、ORACLE数据文件部分损坏。 5、ORACLE DUMP文件损坏。
116 11
|
2月前
|
SQL 存储 Oracle
[Oracle]知识点
本文主要介绍了Oracle数据库的相关知识点,包括数据类型、视图的使用及注意事项,并提供了详细的示例和扩展阅读链接。内容涵盖char族数据类型、number(a, b)数据类型、视图的创建与管理等,适合初学者和进阶用户参考学习。
59 4
[Oracle]知识点
|
2月前
|
Oracle 关系型数据库 数据库
Oracle数据恢复—Oracle数据库文件有坏快损坏的数据恢复案例
一台Oracle数据库打开报错,报错信息: “system01.dbf需要更多的恢复来保持一致性,数据库无法打开”。管理员联系我们数据恢复中心寻求帮助,并提供了Oracle_Home目录的所有文件。用户方要求恢复zxfg用户下的数据。 由于数据库没有备份,无法通过备份去恢复数据库。
|
2月前
|
存储 Oracle 关系型数据库
oracle数据恢复—Oracle数据库文件大小变为0kb的数据恢复案例
存储掉盘超过上限,lun无法识别。管理员重组存储的位图信息并导出lun,发现linux操作系统上部署的oracle数据库中有上百个数据文件的大小变为0kb。数据库的大小缩水了80%以上。 取出&并分析oracle数据库的控制文件。重组存储位图信息,重新导出控制文件中记录的数据文件,发现这些文件的大小依然为0kb。
|
1月前
|
存储 Oracle 关系型数据库
服务器数据恢复—华为S5300存储Oracle数据库恢复案例
服务器存储数据恢复环境: 华为S5300存储中有12块FC硬盘,其中11块硬盘作为数据盘组建了一组RAID5阵列,剩下的1块硬盘作为热备盘使用。基于RAID的LUN分配给linux操作系统使用,存放的数据主要是Oracle数据库。 服务器存储故障: RAID5阵列中1块硬盘出现故障离线,热备盘自动激活开始同步数据,在同步数据的过程中又一块硬盘离线,RAID5阵列瘫痪,上层LUN无法使用。
|
2月前
|
SQL Oracle 关系型数据库
Oracle数据库优化方法
【10月更文挑战第25天】Oracle数据库优化方法
61 7
|
2月前
|
存储 Oracle 关系型数据库
Oracle数据库优化策略
【10月更文挑战第25天】Oracle数据库优化策略
41 5
|
5月前
|
监控 Oracle 关系型数据库
"深度剖析:Oracle SGA大小调整策略——从组件解析到动态优化,打造高效数据库性能"
【8月更文挑战第9天】在Oracle数据库性能优化中,系统全局区(SGA)的大小调整至关重要。SGA作为一组共享内存区域,直接影响数据库处理能力和响应速度。本文通过问答形式介绍SGA调整策略:包括SGA的组成(如数据缓冲区、共享池等),如何根据负载与物理内存确定初始大小,手动调整SGA的方法(如使用`ALTER SYSTEM`命令),以及利用自动内存管理(AMM)特性实现智能调整。调整过程中需注意监控与测试,确保稳定性和性能。
460 2
|
6月前
|
存储 缓存 Oracle
Oracle数据库可扩展性和性能
【7月更文挑战第6天】
113 7
|
存储 SQL 负载均衡
达梦数据库与Oracle数据库:功能、性能和适用场景对比
数据库在现代信息技术领域中扮演着至关重要的角色。在企业级应用中,选择正确的数据库管理系统对于数据存储、处理和查询效率至关重要。本文将对比两个备受关注的数据库管理系统——达梦数据库和Oracle数据库,从功能、性能和适用场景等方面进行深入探讨,以帮助读者在选择合适数据库时做出明智的决策。
2898 1

推荐镜像

更多