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 ...
随机推荐
- XSS 跨站攻击
未整理完 介绍 XSS (Cross site Scripting),跨站脚本攻击,为了区分层叠样式表css,所以叫了XSS. 对于跨站脚本攻击,黑客界共识是:跨站脚本攻击是新型的"缓冲区溢 ...
- windows live writer 设置默认字体
下载 Text Template 插件 设置默认字体添加模版. <p style="padding-bottom: 0px; line-height: 130%; margin-t ...
- MySql简单分页存储过程
BEGIN DECLARE startIndex int; select COUNT(*) INTO RecordCount from test; SET startIndex = (PageInde ...
- Android EditText输入光标居于开头最开始位置
如果欲使EditText加载后的输入光标自动处于最开始处,可以通过设置EditText的android:gravity实现,设置android:gravity为left或者start即可,可以设置: ...
- SDK中常用的工具
Android SDK包含了各种各样的定制工具,简介如下: 一.Android模拟器(Android Emulator )它是在你的计算机上运行的一个虚拟移动设备.你可以使用模拟器来在一个实际的And ...
- php mysql 查询
抓取结果集对象中数据并且转换数组 $row = mysqli_fetch_assoc(结果集对象); 从结果集对象中抓取一行记录->转换关联数组 $row = mysqli_fetch_row( ...
- python爬虫框架Pyspider初次接触
pyspider网站地址:http://docs.pyspider.org/en/latest/.文档比较好,安装起来也非常方便.既然是基于python的框架,那么首先得安装python.微软出的一款 ...
- UOJ348. 【WC2018】州区划分
UOJ348. [WC2018]州区划分 http://uoj.ac/problem/348 分析: 设\(g(S)=(\sum\limits_{x\in S}w_x)^p[合法]\) \(f(S)\ ...
- 3143 codevs 二叉树的序遍历
题目描述 Description 求一棵二叉树的前序遍历,中序遍历和后序遍历 输入描述 Input Description 第一行一个整数n,表示这棵树的节点个数. 接下来n行每行2个整数L和R.第i ...
- 洛谷【P1616】疯狂的采药
浅谈\(DP\):https://www.cnblogs.com/AKMer/p/10437525.html 题目传送门:https://www.luogu.org/problemnew/show/P ...