前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Oracle存储过程

Oracle存储过程

作者头像
颍川
发布于 2019-11-20 17:15:55
发布于 2019-11-20 17:15:55
97500
代码可运行
举报
文章被收录于专栏:颍川颍川
运行总次数:0
代码可运行

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/wangtongxue123456/article/details/79681881

  • Orcle储存过程
    • 什么是储存过程
    • 创建和替换储存过程的语法
    • 存储函数
      • Out中使用光标

Orcle储存过程

什么是储存过程

  1. 什么是存储过程,什么是存储函数
    • 指储存在数据库中供所有用户程序调用的子程序叫做储存过程、储存函数
  2. 储存过程和存储函数比较
    • 相同点
      • 都是完成特定功能的程序
    • 区别
      • 是否用return语句返回值(储存函数可以用return)
  3. 怎么创建储存过程

创建和替换储存过程的语法

语法

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
create [or replace] PROCEDURE 过程名(参数列表) AS PLSQL 子程序体

实例

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
set serveroutput on
--第一个储存过程 :Hello Word
create or replace procedure sayehelloworld
as
--说明部分
/*
调用存储过程的两种方法
1.exec sayhelloworld()
2.
    begin
    sayehelloworld
    sayehelloworld
    end;
*/
begin
    DBMS_OUTPUT.PUT_LINE('Hello Word');
end;

带参数的储存过程

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
--创建带参数的储存过程
--给指定的员工涨100块钱
/**
如何调用
begin
    raisealary('a')
commit
end;
*/
create or replace procedure raisealary(eno in char)
as
--定义一个变量保存涨前的薪水
psal a.num%type;
begin
    --得到员工涨前的薪水
    select num into psal from a where id=eno;
    --给员工涨工资
    update a set num=num+100 where num=eno;
-- 一般不再储存过程中提交和回滚
--打印
DBMS_OUTPUT.PUT_LINE('涨前'||psal||'涨后'||psal+100);
end;

存储函数

函数 为一 命名的储存过程,可带参数,并返回一计算值。 函数和过程结构类似,但必须有一个return子句,用于返回函数值。 创建存储函数的语法

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
create [or replace] function 函数名(参数列表) 
return 函数值类型
AS
pl/sql 子程序体

in和out参数

一般来讲,存储过程和存储函数的区别在于储存函数可以有一个返回值;而存储过程没有返回值。 1、存储过程和存储函数都可以有out参数。2、存储过程和存储函数都可以有多个out参数哦。3、存储过程可以通过out参数来实现返回值。

什么时候用存储过程和存储函数

  • 原则
    • 如果只有一个返回值,用存储函数;否则,就用储存过程。

Out中使用光标

  • 实例
  • 包头
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
CREATE OR REPLACE 
PACKAGE QUERYCESHI AS 

  type numlistcursor is ref cursor;
  procedure finda(numlist out numlistcursor);

END QUERYCESHI;
  • 包体
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
CREATE OR REPLACE
PACKAGE BODY QUERYCESHI AS

  procedure finda(numlist out numlistcursor) AS
  BEGIN
    -- TODO: procedure QUERYCESHI.finda所需的实施
     open numlist for select * from A;
    NULL;
  END finda;

END QUERYCESHI;
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018/03/24 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
25 | MySQL是怎么保证高可用的?
正常情况下,只要主库执行更新生成的所有 binlog,都可以传到备库并被正确地执行,备库就能达到跟主库一致的状态,这就是最终一致性。
HaC
2020/12/30
7640
25 | MySQL是怎么保证高可用的?
MySQL实战第二十五讲-MySQL是怎么保证高可用的?
在上一篇文章中,介绍了 binlog 的基本内容,在一个主备关系中,每个备库接收主库的 binlog 并执行。
越陌度阡
2022/05/06
4050
MySQL实战第二十五讲-MySQL是怎么保证高可用的?
MySQL 主从架构原理
上图展示的是 MySQL 的主从切换流程。在 State-1 中,客户端的读写都直接访问节点 A,而节点 B 是 A 的备库,只是将 A 的更新都同步过来,到本地执行。这样可以保持节点 B 和 A 的数据是相同的。当需要切换的时候,就切成状态 2。这时候客户端读写访问的都是节点 B,而节点 A 是 B 的从库。
张申傲
2020/09/03
1.2K0
MySQL 主从架构原理
MySQL主备的基本原理2
2.备库的压力大。主库提供写能力,备库提供一些读能力。忽略了备库的压力控制,导致备库上的查询耗费了大量的CPU资源,影响了同步速度,造成主备延迟
用户8639654
2021/08/11
7770
MySQL主从如何保证高可用
通过主备同步我们能够保证数据的可靠性(最终一致性),MySQL的主备可用性主要依赖于主备切换的时间,越短越好,但前提是切换完成以后数据要一致。
shysh95
2022/04/07
4950
MySQL主从如何保证高可用
【阿里数据库面试题解】MySQL高可用原理
正常情况下,只要主库执行更新生成的所有binlog,都可以传到备库并被正确执行,备库就能达到跟主库一致的状态,这就是最终一致性。
JavaEdge
2021/12/07
6760
【阿里数据库面试题解】MySQL高可用原理
京东一面:MySQL 主备延迟有哪些坑?主备切换策略
作为一名开发同学,大家对 MySQL 一定不陌生,像常见的 事务特性、隔离级别 、索引等也都是老生常谈。
微观技术
2022/04/07
2K0
京东一面:MySQL 主备延迟有哪些坑?主备切换策略
MySQL高可用架构探秘:主从复制剖析、切换策略、延迟优化与架构选型
在分布式系统中,单机节点在发生故障时无法提供服务,这可能导致长期的服务不可用,从而影响其他节点的运作,导致的后果非常严重
菜菜的后端私房菜
2024/06/28
5910
MySQL集群架构[通俗易懂]
题记: 文章内容输出来源:拉勾教育Java高薪训练营。 本篇文章是 MySQL 学习课程中的一部分笔记。
全栈程序员站长
2022/09/18
1.6K0
MySQL集群架构[通俗易懂]
Mysql 基于innoDB的一篇总结
mysql 为了保证crash-safe, 是通过引入binlog(server 层的逻辑日志), redo log(innodb 存储引擎层日志), undo log(innodb 存储引擎层日志)来保证的。
Check King
2021/08/09
2970
MySql主从复制
在MySql的生产环境中,由于单台MySql不能满足高可用性需求,一般通过主从复制(Master-Slave)方式同步数据,再通过读写分离(MySql-Proxy)来提升数据库并发负载能力。
春哥大魔王
2020/07/14
2.3K0
MySQL主备切换解析
MySQL的主备切换是高可用性数据库架构中的重要一环。通过主备切换,可以在主库出现故障时迅速切换到备库,从而保证系统的持续运行。本文将详细解析MySQL主备切换的基本原理、实现方法以及相关的注意事项。
炒香菇的书呆子
2024/12/04
6950
MySQL主从同步如何操作?
随着业务量的增长,高并发,数据库服务器宕机等问题频繁出现,单台MySQL服务器将会成为系统瓶颈。
程序猿川子
2024/08/20
2690
MySQL主从同步如何操作?
MySQL主备的基本原理
在状态1中,客户端的读写都直接访问节点A,而节点B是A的备库,只是将A的更新都同步过来,到本地执行。这样可以保持节点B和A的数据是相同的。当需要切换的时候,就切成状态2。这时候客户端读写访问的都是节点B,而节点A是B的备库
用户8639654
2021/08/11
9280
关于主从延迟,一篇文章给你讲明白了!
在实际的生产环境中,由单台MySQL作为独立的数据库是完全不能满足实际需求的,无论是在安全性,高可用性以及高并发等各个方面
MySQL技术
2021/07/05
6930
关于主从延迟,一篇文章给你讲明白了!
mysql高可用架构设计,处理高并发,大流量!
主要介绍:复制功能介绍、mysql二进制日志、mysql复制拓扑、高可用框架、单点故障、读写分离和负载均衡介绍等 mysql复制功能介绍 mysql复制功能提供分担读负载 复制解决的问题 实现在不同服务器上的数据分布 利用二进制日志增量进行 不需要太多的带宽 但是使用基于行的复制在进行大批量的更改时会对带宽带来一定得压力,特别是跨IDC环境下进行复制 实现在不同服务器上的数据分布 实现数据读取的负载均衡 需要其他组件配合完成 利用DNS轮询的方式把程序的读连接到不同的备份数据库, 使用LVS,haproxy
思梦php
2018/03/09
2.5K0
mysql高可用架构设计,处理高并发,大流量!
Mysql解决主从慢同步问题(上)
一般主从复制,有三个线程参与,都是单线程:Binlog Dump(主) —–>IO Thread (从) —–> SQL Thread(从)。复制出现延迟一般出在两个地方
陈不成i
2021/06/17
2.1K0
MySQL主从复制延迟解决方案
前面一篇,我们学习到了MySQL多版本并发控制(MVCC)实现原理,这一篇我们接着学习MySQL主从复制模式下的延迟解决方案。
兔云小新LM
2023/03/16
4.8K0
mysql读写分离延迟问题_MySQL读写分离后的延迟解决方案
根据上图可以看到QPS:10.73k,实际上真实的并发大量数据到达的时候,我这里最高的QPS是将近15k.而目前单个数据库分片(实例)4CPU8G内存的配置下,最高的性能是7k的QPS。
全栈程序员站长
2022/09/02
1.4K0
MySQL 主从架构之 GTID 的实践
为了保证高可用,之前在测试环境部署了一套 MySQL 双主模式,当一个主库服务出现异常,可以将流量切到另外一个主库,两个主库之间相互同步数据。
悟空聊架构
2023/09/16
7751
MySQL 主从架构之 GTID 的实践
推荐阅读
相关推荐
25 | MySQL是怎么保证高可用的?
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验