day70 12-存储过程和存储函数
什么是相关子查询?






这是一个子查询,子查询本身又是一个多表查询。where不能用组函数,但是可以用字符函数instr()。除了order by排序没有考,查询语句的所有内容都考了。这个题有点难度。






今天下午新的内容:存储过程,函数和触发器。这三个也是数据库的对象。一共要学习十个数据库的对象:表,视图,序列,索引和同义词。今天下午学五个:存储过程,存储函数,触发器,包和包体。经常用到这十个数据库的对象。

在Java中不能直接调用PLSQL程序,实际上它调用的是存储过程和存储函数。存储过程和存储函数是由PLSQL语言写的,从而这样来调我们的PLSQL。


存储过程不能通过return语句返回一个值,存储函数可以通过return语句返回一个值。除此之外,可以认为存储过程和存储函数是一样的。

下午的重点不是PLSQL,下午的重点是如何用PLSQL创建几个数据库的对象。
AS相当于PLSQL程序的declare,如果没有声明或者是说明部分,declare可以不写。
尽管AS相当于是declare,但是它不可以省略。


查看程序包的时候。IN是输入参数,OUT是输出参数。


调用存储过程的程序才提交事务,保证了所有的操作是同一个事务。


oracle sql developer可以编写程序,也可以调试和运行程序。不建议远程调试。需要指定调试的端口才可以进行调试。建议把oracle sql developer拷贝到数据库所在的服务器上。


本机调试就比较方便。




用系统管理员进行授权,授权用户SCOTT调试存储过程。










卧槽,调试也是会改变数据的喔。


调试就是把这个存储过程执行一遍。


编译一次不允许重复编译存储过程。


存储函数必须有一个return语句返回函数的值。





存储函数可以有一个返回值。存储过程没有。








当有了out参数,存储过程和存储函数,哪一个就可以不要了?

存储函数就可以不要了。存储过程可以有返回值也可以没有返回值。存储函数完全可以用带out参数的存储过程来替代。为什么oracle依然保留了存储函数?多余了可以不要了,不支持了。不可以。因为实际上这个问题不是一个技术的问题,是一个历史问题。oracle最早的版本有存储过程和存储函数,后来随着版本的升级,向下兼容,新的版本要兼容老的版本。如果新的版本不支持存储函数,老的版本有存储函数就用不起来了。为了做到向前和向下兼容。
Hadoop版本的兼容性做的不好,Hadoop1.0上做了一个系统在Hadoop2.0上不能跑起来,向前兼容。版本的兼容性做的不好。版本升级的时候要做到向前和向下兼容。



day70 12-存储过程和存储函数的更多相关文章
- Oracle03——游标、异常、存储过程、存储函数、触发器和Java代码访问Oracle对象
作者: kent鹏 转载请注明出处: http://www.cnblogs.com/xieyupeng/p/7476717.html 1.游标(光标)Cursor 在写java程序中有集合的概念,那么 ...
- oracle存储过程和存储函数&触发器
oracle存储过程和存储函数 指存储在数据库中供所有用户程序调用的子程序叫存储过程,存储函数 存储过程和存储函数的相同点:完成特定功能的程序 存储过程和存储函数的区别:是否用return语句返回值 ...
- 存储过程,存储函数(Oracle)
存储过程和存储函数 指存储在数据库中供所有用户程序调用的子程序叫存储过程.存储函数. 存储过程和存储函数的区别? 存储函数:可以通过return 语句返回函数值. 存储过程:不能 除此之外我们可以认为 ...
- MySQL数据库之存储过程与存储函数
1 引言 存储过程和存储函数类似于面向对象程序设计语言中的方法,可以简化代码,提高代码的重用性.本文主要介绍如何创建存储过程和存储函数,以及存储过程与函数的使用.修改.删除等操作. 2 存储过程与存储 ...
- 编程开发之--Oracle数据库--存储过程和存储函数(1)
1.存储过程和存储函数 描述:指存储在数据库中供所有用户程序调用的子程序叫做存储过程.存储函数 区别:存储函数可以通过return子句返回一个函数的值 (1)存储过程 语法:create [or re ...
- mysql存储过程和存储函数
mysql存储过程和存储函数 存数函数代码示例: DROP PROCEDURE IF EXISTS calc_ci_day_suc_rate; delimiter // CREATE FUNCTION ...
- mysql 存储过程和存储函数
14.1.1 创建存储过程 MySQL中,创建存储过程的基本形式如下: CREATE PROCEDURE sp_name ([proc_parameter[,...]]) [characteristi ...
- Oracle 存储过程以及存储函数
以下的一些例子是基于scott用户下的emp表的数据,一和二使用的均为in,out参数,最后一个综合练习使用了 in out参数 一.存储过程 1.创建无参的存储过程示例 ------ hello ...
- 编程开发之--Oracle数据库--存储过程和存储函数(2)
上一小结我们简单介绍了存储过程和存储函数,对存储过程和存储函数有了一个基本的了解,接下来介绍在java程序中如何调用我们创建的存储过程和存储函数 1.在应用程序中调用我们的存储过程 创建一个简单的Ja ...
- MySQL 存储过程和存储函数学习
#一.存储过程和存储函数的创建案例 CREATE PROCEDURE myprocedure(in a int,in b int ,OUT c INT) BEGIN set c=a+b; end; c ...
随机推荐
- CodeForces 103D Time to Raid Cowavans 分块+dp
先对b从小到大sort,判断b是不是比sqrt(n)大,是的话就直接暴力,不是的话就用dp维护一下 dp[i]表示以nb为等差,i为起点的答案,可以节省nb相同的情况 #include<bits ...
- IIS 高并发的相关配置
前言: 随着业务量的增加,服务器流量的增长增长了好多,高峰期会出现 503 的错误,IIS 对请求数的配置默认是 1000,无法满足现状的需求: 需要收集性能数据如下: 1.Windows性能监视器, ...
- Javascript-- jQuery Ajax应用
使用ajax()方法加载服务器数据 使用ajax()方法是最底层.功能最强大的请求服务器数据的方法,它不仅可以获取服务器返回的数据,还能向服务器发送请求并传递数值,它的调用格式如下: jQuery.a ...
- mysql 在Windows下自动备份
1.一般备份方法主要为两种: 直接保存数据库data文件夹 mysqldump 用sql命令备份(文件存放目录必须存在) 首先cmd进入MySQL\bin,然后mysqldump --default- ...
- 总结:实体类和(XML或二进制)之间相互转(序列化和反序列化)
XML和实体类之间相互转换(序列化和反序列化) C# XML反序列化与序列化举例:XmlSerializer XML文件与实体类的互相转换 通过我前面的几篇收藏的文章,今天来自己做个对实体类对象序 ...
- python 编码拓展,小数据池,
编码拓展: 1.在所有类型的编码中,编码的二进制互不识别, 2.在传输的过程中不能是万国码的二进制解码传输, 因此将unicode变为utf - 8或者变成gbk编码尤为重要; 利用encode编码为 ...
- git之cherry-pick
当想把当前分支提交的代码,也在其他分支提交,那可以用cherry-pick命令. 1 假设在master分支commit的id为:abc12345; 2 切换到其他分支,如develop分支; 3 在 ...
- PHP判断键值数组是否存在,使用empty或isset或array_key_exists(转)
一个例子 猜猜看,下面的例子会输出什么? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 <?php $a = array('a'=>1, 'b'=>0, 'c'= ...
- POJ3468:A Simple Problem with Integers
浅谈分块:https://www.cnblogs.com/AKMer/p/10369816.html 题目传送门:http://poj.org/problem?id=3468 分块裸题.对于每个块记录 ...
- win32 获取本机网卡信息(MAC地址,IP地址等)
由于一个需求需要获取网卡的MAC地址,就搜了一下,大部分都是COPY来COPY去的一些代码,有很多甚至不能直接运行或有还有内存泄漏.自己查了一下MSDN然后封装了一下: 需要注意,一个机器可能有多个网 ...