基于oracle 的PL/SQL编程 - 存储过程
接上篇,游标使用的语句,相当于一段匿名的函数,窗口关闭了就不存在了。如果想要窗口关闭了,还能继续执行那段代码,就需要存储过程了: PLSQL是指一个个PLSQL的业务处理过程存储起来进行复用,这些被存储起来的PLSQL程序称之为存储过程。

语法:

plsql如何创建存储过程:


1. 一个简单的存储过程,存储过程名称为 p_hello
create or replace procedure p_hello is
--如果需要,在此处声明变量
begin
dbms_output.put_line('hello world');
end p_hello;
-- 写完点击执行,这段语句会被存储起来
注意,上面存储过程中 is 关键字可以换成as 关键字,一样的效果
存储过程的调用:打开一个测试窗口,在begin 和end之间写上存储过程名,然后点击执行,就是调用了一次存储过程
   执行结果:
begin
-- Call the procedure
p_hello;
end;
2.带入参存储过程:
--查询并打印某个员工的姓名,薪水,要求调用时传入员工编号,控制台自动打印
create or replace procedure p_empInfo(i_empno IN emp.empno%TYPE) as
--声明变量
v_ename emp.ename%TYPE;
v_sal emp.sal%TYPE;
begin
select ename, sal into v_ename, v_sal from emp where empno = i_empno;
dbms_output.put_line('员工编号:' || i_empno || ',姓名:' || v_ename || ',薪水:' || v_sal); end p_empInfo;
写完点击执行,编译该存储过程。
调用:打开一个测试窗口,
-- 调用带入参存储过程
begin
p_empInfo(7839);
p_empInfo(7902);
end;
结果:

3. 带入参及返回值的存储过程:输入员工号查询某个员工(7839)信息,要求将薪水作为返回值输出,给调用的程序使用,比如java 程序,c# .net程序等
--输入员工号查询某个员工(7839)信息,要求讲薪水作为返回值输出,给调用的程序使用
create or replace procedure p_empInfo2(i_empno IN emp.empno%TYPE, o_sal out emp.Sal%TYPE) as begin
select sal into o_sal from emp where empno = i_empno; end p_empInfo2;
在测试窗口中调用该存储过程,需要事先定义一个变量作为 存储过程返回值的接收参数,在打印语句中打印该参数的值,执行该语句, 输出结果5000.00
-- Created on 2018/6/3 by ADMINISTRATOR
declare v_sal emp.sal%TYPE;
begin
p_empInfo2(7839,v_sal);
dbms_output.put_line(v_sal); end;
基于oracle 的PL/SQL编程 - 存储过程的更多相关文章
- 基于oracle 的PL/SQL编程 -变量使用
		
1. 需要开启的服务: 本机安装的oracle ,默认是开机启动服务的,开机时间太慢,关闭了,需要手动打开: OracleDBConsoleorcl OracleOraDb10g_home1iSQL ...
 - PL/SQL编程—存储过程
		
SQL> create or replace procedure sp_pro3(name_in varchar2,id_in varchar2) is begin update mytest ...
 - Oracle之PL/SQL编程
		
PL/SQL(Procedural Language/SQL,过程语言/SQL) 是结合了Oracel过程语言和结构化查询语言(SQL)的一种扩展语言. 优点: (1)PL/SQL具有编程语言的特点, ...
 - ORACLE PL/SQL编程详解
		
ORACLE PL/SQL编程详解 编程详解 SQL语言只是访问.操作数据库的语言,并不是一种具有流程控制的程序设计语言,而只有程序设计语言才能用于应用软件的开发.PL /SQL是一种高级数据库程序设 ...
 - ORACLE PL/SQL编程详解(转)
		
原帖地址:http://blog.csdn.net/chenjinping123/article/details/8737604 ORACLE PL/SQL编程详解 SQL语言只是访问.操作数据库的语 ...
 - [强烈推荐]ORACLE PL/SQL编程详解之七:程序包的创建与应用(聪明在于学习,天才在于积累!)
		
原文:[强烈推荐]ORACLE PL/SQL编程详解之七:程序包的创建与应用(聪明在于学习,天才在于积累!) [强烈推荐]ORACLE PL/SQL编程详解之七: 程序包的创建与应用(聪明在于学习,天 ...
 - ORACLE PL/SQL编程之八:把触发器说透
		
原文:ORACLE PL/SQL编程之八:把触发器说透 ORACLE PL/SQL编程之八: 把触发器说透 大家一定要评论呀,感谢!光发表就花了我将近一个下午. 本篇主要内容如下: 8.1 触发器类型 ...
 - ORACLE PL/SQL编程之六:把过程与函数说透(穷追猛打,把根儿都拔起!)
		
原文:ORACLE PL/SQL编程之六:把过程与函数说透(穷追猛打,把根儿都拔起!) ORACLE PL/SQL编程之六: 把过程与函数说透(穷追猛打,把根儿都拔起!) 继上篇:ORACLE P ...
 - [推荐]ORACLE PL/SQL编程之四:把游标说透(不怕做不到,只怕想不到)
		
原文:[推荐]ORACLE PL/SQL编程之四:把游标说透(不怕做不到,只怕想不到) [推荐]ORACLE PL/SQL编程之四: 把游标说透(不怕做不到,只怕想不到) 继上两篇:ORACLE PL ...
 
随机推荐
- DataTable 转Json格式C#代码
			
/// <summary> /// dataTable转换成Json格式 /// </summary> /// <param name="dt"> ...
 - loj#501 「LibreOJ β Round」ZQC 的树列
			
分析 代码(我的代码是瞎jb水过去的) #include<bits/stdc++.h> using namespace std; #define li long long li a[]; ...
 - 【SpringBoot】 项目中运用的一些技巧,mybatis-plus 自动编译等(持续更新)
			
前言 本文将总结项目中用到的一些springboot 的技巧,持续更新. Mybatis-Plus 的运用 使用原因: 主要是节省了Mapper层的编写,通过继承BaseMapper可以直接调用通用的 ...
 - 详细理解JS中的继承
			
正式说继承之前,有两个相关小点: JS只支持实现继承,即继承实际的方法,不支持接口继承(即继承方法的签名,但JS中函数没签名) 所有对象都继承了Object.prototype上的属性和方法. 说继承 ...
 - Python算法每日一题--002--求众数
			
给定一个大小为 n 的数组,找到其中的众数.众数是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素. 你可以假设数组是非空的,并且给定的数组总是存在众数. 示例 1: 输入: [3,2,3]输出: 3示 ...
 - Linear Regression and Gradient Descent
			
随着所学算法的增多,加之使用次数的增多,不时对之前所学的算法有新的理解.这篇博文是在2018年4月17日再次编辑,将之前的3篇博文合并为一篇. 1.Problem and Loss Function ...
 - 公司C++规范学习
			
目录 公司C++规范学习 语法部分 风格/约定 公司C++规范学习 语法部分 class和struct关键字的选择:class表示被封装的用户自定义类型,不公开定义非静态数据成员,struct表示数据 ...
 - vuejs基础-事件修饰符
			
事件修饰符: .stop 阻止冒泡 .prevent 阻止默认事件 .capture 添加事件侦听器时使用事件捕获模式 .self 只当事件在该元素本身(比如不是子元素)触发时触发回调 .once 事 ...
 - jQuery基础--CSS操作、class操作、attr操作、prop操作
			
1.1.1 css操作 功能:设置或者修改样式,操作的是style属性. 设置单个样式 //name:需要设置的样式名称 //value:对应的样式值 css(name, value); //使 ...
 - 第五周课程总结&实验报告三
			
1.已知字符串:"this is a test of java".按要求执行以下操作:(要求源代码.结果截图.) •统计该字符串中字母s出现的次数. •统计该字符串中子串" ...