不得不会的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

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

相关文章
|
3月前
|
Oracle 关系型数据库 Linux
【赵渝强老师】Oracle数据库配置助手:DBCA
Oracle数据库配置助手(DBCA)是用于创建和配置Oracle数据库的工具,支持图形界面和静默执行模式。本文介绍了使用DBCA在Linux环境下创建数据库的完整步骤,包括选择数据库操作类型、配置存储与网络选项、设置管理密码等,并提供了界面截图与视频讲解,帮助用户快速掌握数据库创建流程。
353 93
|
2月前
|
Oracle 关系型数据库 Linux
【赵渝强老师】使用NetManager创建Oracle数据库的监听器
Oracle NetManager是数据库网络配置工具,用于创建监听器、配置服务命名与网络连接,支持多数据库共享监听,确保客户端与服务器通信顺畅。
188 0
|
5月前
|
存储 Oracle 关系型数据库
服务器数据恢复—光纤存储上oracle数据库数据恢复案例
一台光纤服务器存储上有16块FC硬盘,上层部署了Oracle数据库。服务器存储前面板2个硬盘指示灯显示异常,存储映射到linux操作系统上的卷挂载不上,业务中断。 通过storage manager查看存储状态,发现逻辑卷状态失败。再查看物理磁盘状态,发现其中一块盘报告“警告”,硬盘指示灯显示异常的2块盘报告“失败”。 将当前存储的完整日志状态备份下来,解析备份出来的存储日志并获得了关于逻辑卷结构的部分信息。
|
3月前
|
SQL Oracle 关系型数据库
Oracle数据库创建表空间和索引的SQL语法示例
以上SQL语法提供了一种标准方式去组织Oracle数据库内部结构,并且通过合理使用可以显著改善查询速度及整体性能。需要注意,在实际应用过程当中应该根据具体业务需求、系统资源状况以及预期目标去合理规划并调整参数设置以达到最佳效果。
288 8
|
5月前
|
SQL Oracle 关系型数据库
比较MySQL和Oracle数据库系统,特别是在进行分页查询的方法上的不同
两者的性能差异将取决于数据量大小、索引优化、查询设计以及具体版本的数据库服务器。考虑硬件资源、数据库设计和具体需求对于实现优化的分页查询至关重要。开发者和数据库管理员需要根据自身使用的具体数据库系统版本和环境,选择最合适的分页机制,并进行必要的性能调优来满足应用需求。
251 11
|
5月前
|
Oracle 关系型数据库 数据库
数据库数据恢复—服务器异常断电导致Oracle数据库报错的数据恢复案例
Oracle数据库故障: 某公司一台服务器上部署Oracle数据库。服务器意外断电导致数据库报错,报错内容为“system01.dbf需要更多的恢复来保持一致性”。该Oracle数据库没有备份,仅有一些断断续续的归档日志。 Oracle数据库恢复流程: 1、检测数据库故障情况; 2、尝试挂起并修复数据库; 3、解析数据库文件; 4、导出并验证恢复的数据库文件。
|
5月前
|
存储 Oracle 关系型数据库
【赵渝强老师】Oracle RMAN的目录数据库
Oracle RMAN默认将备份元信息存储在控制文件中,但控制文件损坏或丢失会导致恢复失败,且备份增多会使控制文件无限增长。为解决这些问题,Oracle引入了RMAN目录数据库(Catalog Database),专门用于存储RMAN备份的元信息。使用目录数据库可提升备份管理效率,支持多数据库共享、长期备份历史记录存储,并可保存RMAN脚本。本文详细介绍了如何创建目录数据库、注册目标数据库及其操作步骤。
128 0
|
3月前
|
缓存 关系型数据库 BI
使用MYSQL Report分析数据库性能(下)
使用MYSQL Report分析数据库性能
136 3
|
3月前
|
关系型数据库 MySQL 数据库
自建数据库如何迁移至RDS MySQL实例
数据库迁移是一项复杂且耗时的工程,需考虑数据安全、完整性及业务中断影响。使用阿里云数据传输服务DTS,可快速、平滑完成迁移任务,将应用停机时间降至分钟级。您还可通过全量备份自建数据库并恢复至RDS MySQL实例,实现间接迁移上云。
|
3月前
|
关系型数据库 MySQL 分布式数据库
阿里云PolarDB云原生数据库收费价格:MySQL和PostgreSQL详细介绍
阿里云PolarDB兼容MySQL、PostgreSQL及Oracle语法,支持集中式与分布式架构。标准版2核4G年费1116元起,企业版最高性能达4核16G,支持HTAP与多级高可用,广泛应用于金融、政务、互联网等领域,TCO成本降低50%。

热门文章

最新文章

推荐镜像

更多