之前我们学习过 PL/SQL, 那么当我们的工作中我们通过 PL/SQL 做很多的事情,那么有一个问题,在每次的座同样一件事的时候是不是都需要重新通过 PL/SQL 去完成呢?可不可以只写一次然后,在以后需要的时候调用它呢?答案当然是肯定的了。我们把这个东西就叫做存储过程(PROCEDURE)。

创建

  创建存储过程的语法如下:

CREATE [OR REPLACE] PROCEDURE <过程名>
(<参数1>, [方式1] <数据类型1>,
<参数2>, [方式2] <数据类型2>
......
)
IS|AS
PL/SQL 主体部分;

  例如查看 emp 表中用户的个数:

create or replace procedure test_count
is
v_total number(2);
begin
select count(*) into v_total from emp;
DBMS_OUTPUT.put_line('总人数:'||v_total);
end;

调用

  调用存储过程的命令是 EXECUTE。执行上面我们创建的存储过程查看 emp 表员工的数量。

EXECUTE test_count();

删除

  当不需要的时候可以将其删除:

DROP PROCEDURE <name>;

--删除刚才创建的存储过程
DROP PRODECURE test_count;

存储过程中类型参数的传递

  1. in 类型

    这是一个输入类型,表示将这个参数输入给存储过程。

create or replace procedure double(in_num in NUMBER, out_num out NUMBER) is
begin
out_num:=in_num * 2;
end double;

  2. out 类型

    这是一个输出类型,意思就是这个参数在存储过程中被赋值,最后将其传递出去。

  3. in out 类型

    这个类型就是上面提到两种类型的综合版本。

create or replace procedure double2(in_out_num in out NUMBER) is
begin
in_out_num:=in_out_num * 2;
end double2;

  以上只是对存储过程的一些概念有了基本的了解,特别适合我们上手做一些东西,当然以后会对其有更加详细的介绍大家继续关注哦!

orcale 之 存储过程的更多相关文章

  1. 项目中Orcale存储过程优化记录

    今天对之前写的Orcale存储过程做了一些优化,使其变得更加灵活,之前写的存储过程是使用游标存储SQL执行结果,但是使用游标带来的弊端是,在声明时,它所执行的SQL就已经被写死,无法修改.若想更加灵活 ...

  2. Jfinal调用Orcale存储过程

    因为项目需要,最近一直在学习Orcale存储过程,但发现在网上很少有人写Jave中Jfinal调用Orcale存储过程的文章,即使有也是几年前的,很多都不能用,今天给大家分享一段Jfinal调用Orc ...

  3. [C#对Oracle操作]C#操作调用Orcale存储过程有参数

    /// <summary> /// 获取ERP固定资产计提数据 /// </summary> /// <param name="strCompanyCode&q ...

  4. Orcale 存储过程实践总结

    由于项目中用到存储过程,这两天把存储过程方面的知识简单回顾了一下并分享给大家. 编写第一个存储过程 create or replace procedure ky_proc_in_out(para3 i ...

  5. orcale存储过程学习之路(一)

    ----------------------------------------- 建表 ------------------------------------------ create table ...

  6. orcale存储过程学习之路--存储过程实例(三)

    --创建表 create table TESTTABLE(  id1  VARCHAR2(12),  name VARCHAR2(32))select t.id1,t.name from TESTTA ...

  7. orcale存储过程学习之路--创建空存储过程(二)

    --创建表 create table TESTTABLE(  id1  VARCHAR2(12),  name VARCHAR2(32))select t.id1,t.name from TESTTA ...

  8. 使用oracle存储过程遇到的坑

    之前一直都是用sqlserver 突然用oracle  蛋疼的连存储过程执行一个查询都不会 各种百度锕  现在记录下面的语法问题 orcale创建一个存储过程的语法. create or replac ...

  9. Oracle 的存储过程以及用jdbc调用存储过程

    存储过程 就是一组用于完成特定功能的PL/SQL 具名语句块,该SQL语句集经过编译后存储在数据库系统中.在使用时候,我们只需要通过指定已经定义的存储过程名字并给出对应的参数来执行  存储过程的定义语 ...

随机推荐

  1. [LeetCode 题解]: Minimum Depth of Binary Tree

    Given a binary tree, find its minimum depth. The minimum depth is the number of nodes along the shor ...

  2. 一些参考网站 - Reference Documentation - Website Address

    Reference Documentation - Website Address MSDN Visual Studio 2015官方文档 https://msdn.microsoft.com/zh- ...

  3. JavaScript 用new创建对象的过程

       在JavaScript中创建自定义对象都需要用new运算符,那么创建对象的过程是什么样的呢? 例如现在有如下构造函数: function Person(name) { this.name = n ...

  4. Java中获取运行代码的类名、方法名

    以下是案例,已运行通过 package com.hdys; /* * 1.获取当前运行代码的类名,方法名,主要是通过java.lang.StackTraceElement类 * * 2. * [1]获 ...

  5. [HNOI2003]消防局的设立(树上距离为k的最小覆盖问题)

    题目的大概意思现在有一棵树,在树上找半径小于等于2的最小覆盖点的最小个数. 题目链接 讲一讲此类题的贪心策略: 就是每次寻找最低没有被覆盖的点,显然对于覆盖它的所有点中,在他的祖先处设立一个点最优.所 ...

  6. c++ inline使函数实现可以在头文件中,避免多重定义错误

    作者:Jon Lee链接:https://www.zhihu.com/question/53082910/answer/133612920来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业 ...

  7. Mysql 学习笔记09

    ---Mysql 的主从复制  replication 1 主从复制原理 至少有2台服务器,一台主服务器,一台从服务器,主服务器的所有改动,如 insert update delete 操作,都会同步 ...

  8. 爬虫开发9.scrapy框架之递归解析和post请求

    今日概要 递归爬取解析多页页面数据 scrapy核心组件工作流程 scrapy的post请求发送 今日详情 1.递归爬取解析多页页面数据 - 需求:将糗事百科所有页码的作者和段子内容数据进行爬取切持久 ...

  9. “全栈2019”Java第十四章:二进制、八进制、十六进制

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  10. MySQL LOAD DATA

    <?php /** * @Author: Awe * @Date: 2016-10-26 17:26:54 * @Last Modified by: Awe * @Last Modified t ...