`
zheyiw
  • 浏览: 997342 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

plsql之存储过程的调用和执行

阅读更多
存储过程
1 什么是存储过程?
	用于在数据库中完成特定的操作或者任务。是一个PLSQL程序块,可以永久的保存在数据库中以供其他程序调用。

2 存储过程的参数模式


存储过程的参数特性:
	IN类型的参数	OUT类型的参数	IN-OUT类型的参数
值被	传递给子程序	返回给调用环境	传递给子程序
返回给调用环境
参数形式	常量	未初始化的变量	初始化的变量
使用时	默认类型	必须明确指定	必须明确指定


3 无参数存储过程的使用:
CREATE  OR  REPLACE  PROCEDURE  过程名  [(parameter,...)]
IS
定义变量
Begin
Plsql程序
End;

例:创建一个存储过程,用于向数据库中插入一条记录。
第一步:创建
CREATE  OR  REPLACE  PROCEDURE  pro_1
IS
Begin
  insert into person values (11,'aa','aav');
End;

第二步:在sql*plus中执行该过程
exec pro_1;

第三步:通过JDBC使用存储过程。
	private Connection conn = null;
	private ResultSet rs = null;
	private CallableStatement state = null;
	//调用一个无参数的存储过程
	public void testPro()
	{
		conn = Tools.getConnection();
		try {
			state = conn.prepareCall("{call pro_1}");
			state.execute();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}


4 带有IN类型参数的存储过程的使用。
例:创建一个存储过程,用于向数据库中插入一条记录。
第一步:创建
CREATE  OR  REPLACE  PROCEDURE  pro_2(id number,name varchar2,email varchar2)
IS
Begin
  insert into person values (id,name,email);
End;
第二步:在sql*plus中执行该过程
exec pro_2(12,'aaa','aaa');

第三步:通过JDBC使用存储过程。
	//使用一个带有 IN 类型参数的存储过程
	public void testPro_in(int id,String name,String email)
	{
		conn = Tools.getConnection();
		try {
			state = conn.prepareCall("{call pro_2(?,?,?)}");
			state.setLong(1, id);
			state.setString(2, name);
			state.setString(3, email);
			state.execute();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

5 带有out类型参数的存储过程的使用。
例:创建一个存储过程,用于返回数据库中的Person表的总行数。

第一步:创建
CREATE  OR  REPLACE  PROCEDURE  pro_3(num out number)
IS
mynum number;
Begin
  select count(*) into mynum from person;
  num := mynum;
End;
或者
CREATE  OR  REPLACE  PROCEDURE  pro_3(num out number)
IS
Begin
  select count(*) into num from person;
End;

第二步:在sql*plus中执行该过程
declare 
a number;
begin
  pro_3(a);
  dbms_output.put_line(a);
end;

第三步:通过JDBC使用存储过程。
public void testPro_out()
	{
		conn = Tools.getConnection();
		try {
			state = conn.prepareCall("{call pro_3(?)}");
			state.registerOutParameter(1, Types.NUMERIC);
			state.execute();
			int num = state.getInt(1);
			System.out.println(num);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	} 

6 带有in-out类型参数的存储过程的使用。
创建:
CREATE  OR  REPLACE  PROCEDURE  pro_4(num in out number)
IS
a number := 100;
Begin
  num := a*num;
End;

在sql*plus中执行该过程
declare
  a number := 12;
begin
  pro_4(a);
  dbms_output.put_line(a);
end;


练习:
已知有一员工表,请编写一个存储过程,可以通过部门ID得到该部门员工的平均工资。
分享到:
评论

相关推荐

    plsql之存储过程

    plsql之存储过程的调用和执行,例子讲解,注释不多,但还是实用

    PLSQL jdbc调用存储过程(入门)

    PLSQL jdbc调用存储过程(入门)

    plsql developer简单实现定时器&存储过程

    what主要填写你需要定时器执行的存储过程名称。如上图所示,我写了一个名称为“AddHydropowerData”的存储过程。 Interval为定时器执行的时间。 (1).每分钟执行 Interval => TRUNC(sysdate,‘mi’) + 1/ (24*60) ...

    触发器和程序包

    说其具有特殊性,是因为触发器的调用执行和存储过程不一样,存储过程的程序调用执行必须由程序员事先设计并编写好调用程序代码及对应的参数值,即存储过程的调用执行由程序员决定,而触发器程序不能被应用程序调用,...

    PLSQLDeveloper下载

    因为PL/SQL允许混合SQL申明和过程结构,因此可以在将申明发送到甲骨文系统去执行之前使用PL/SQL区段和副程序来组合SQL申明,没有PL/SQL,甲骨文需要就每次处理SQL申明,在网络环境中,这将影响交通流量,而且增加...

    plsql_oracle 编程

    第六章 存储函数和过程 13 §6.1 引言 13 §6.2 创建函数 13 §6.3 存储过程 13 §6.3.1 创建过程 13 §6.3.2 调用存储过程 13 §6.3.3 开发存储过程步骤 13 §6.3.4 与过程相关数据字典 13 第七章 包的创建和应用 ...

    keep tool8(集成PLSQL含keygen)part1

    它使开发者可以对PL/SQL存储程序单元和Java类进行编码和编译,可以使DBA检测到数据库内部构造的任何部分,并且通过上下页菜单和图形用户界面,执行任何ALTER命令。Hora提供了一种快速简易的方式进行读取、保存和执行...

    Oracle_PLSQL语言基础

    PL/SQL块可以被命名和存储在ORACLE服务器中,同时也能被其他的PL/SQL程序或SQL命令调用,任何客户/服务器工具都能访问PL/SQL程序,具有很好的可重用性。  . 可以使用ORACLE数据工具管理存储在服务器中的PL/SQL...

    Oracle_Database10g_性能调整与优化-第10章_使用PLSQL提高性能

    一旦这些对象以编译过的格式存储在数据库中,那么用户只要获得相应对象的执行特权就都可以使用任何的Oracle工具来执行这些对象。一旦开始执行对象,p-代码(可执行代码)将被加载到SGA共享池中,再由 Oracle执行。一个...

    PLSQL Developer(免安装、汉化版,很好用的) 8.0.3.1510.rar

    另外,还含有历史缓存,您可以轻松调用先前执行过的SQL语句。该SQL编辑器提供了同PL/SQL编辑器相同的强大特性。  命令窗口——使用PL/SQL Developer 的命令窗口能够开发并运行SQL脚本。该窗口具有同SQL*Plus相同...

    plsql_oracle 8i 编程讲义

    第六章 存储函数和过程 13 §6.1 引言 13 §6.2 创建函数 13 §6.3 存储过程 13 §6.3.1 创建过程 13 §6.3.2 调用存储过程 13 §6.3.3 开发存储过程步骤 13 §6.3.4 与过程相关数据字典 13 第七章 包的创建和应用 ...

    PLSQL基础教程

    第六章 存储函数和过程 13 §6.1 引言 13 §6.2 创建函数 13 §6.3 存储过程 13 §6.3.1 创建过程 13 §6.3.2 调用存储过程 13 §6.3.3 开发存储过程步骤 13 §6.3.4 与过程相关数据字典 13 第七章 包的创建...

    PLSQL程序设计

    第六章 存储函数和过程 13 §6.1 引言 13 §6.2 创建函数 13 §6.3 存储过程 13 §6.3.1 创建过程 13 §6.3.2 调用存储过程 13 §6.3.3 开发存储过程步骤 13 §6.3.4 与过程相关数据字典 13 第七章 包的创建和应用 ...

    OraclePLSQL编程经典例子

    3. 调用过程 exec 过程名(参数1,参数2…)或call 过程名参数1,参数2…) ① exec xxc_pro1; 或者是 ② call xxc_pro1; pl/sql可以做什么? 块:包括过程、函数、触发器、包。 编写规范: 1. 注释 --:单行注释 eg:...

    Toad 使用快速入门

     把鼠标定位到表/视图/存储过程名称之上,按F4,可以打开对象描述窗口,方便的查看表和视图的定义,存储过程的源代码,  非常容易对SQL语句的分析其执行计划:单击工具栏上的 按钮就可以看到Explain Plan的...

    PLSQL基础word

    PL/SQL块可以被命名和存储在ORACLE服务器中,同时也能被其他的PL/SQL程序或SQL命令调用,任何客户/服务器工具都能访问PL/SQL程序,具有很好的可重用性。  . 可以使用ORACLE数据工具管理存储在服务器中的PL/SQL...

    PL/SQL Developer

    另外,还含有历史缓存,您可以轻松调用先前执行过的SQL语句。该SQL编辑器提供了同PL/SQL编辑器相同的强大特性。  命令窗口——使用PL/SQL Developer 的命令窗口能够开发并运行SQL脚本。该窗口具有同SQL*Plus相同...

    PLSQL Developer 7.1.5

    另外,还含有历史缓存,您可以轻松调用先前执行过的SQL语句。该SQL编辑器提供了同PL/SQL编辑器相同的强大特性。  命令窗口——使用PL/SQL Developer 的命令窗口能够开发并运行SQL脚本。该窗口具有同SQL*Plus相同...

    PL/SQL Developer8.04官网程序_keygen_汉化

     PL/SQL中的过程和函数与其他语言的过程和函数一样,都是为了执行一定的任务而组合在一起的语句。过程无返回值,函数有返回值。其语法结构为:  过程:Create or replace procedure procname(参数列表) as PL/SQL...

    Oracle9i的init.ora参数中文说明

    说明: 与 NLS_TIME_TZ_FORMAT 相似, 其中的一对值指定 TIMESTAMP 数据类型的默认值, 该类型除存储 YEAR, MONTH 和 DAY 日期值, HOUR, MINUTE 和 SECOND 时间值, 还存储 TIMEZONE_HOUR 和 TIMEZONE_MINUTE。...

Global site tag (gtag.js) - Google Analytics