`
gudujianxuehu
  • 浏览: 97073 次
  • 来自: ...
社区版块
存档分类
最新评论

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中存储过程的建立,导出,导入,使用

    存储过程是一种数据库对象,它是由一系列SQL语句组成的预编译的程序块,存储在数据库中,可以通过调用的方式执行。在Oracle数据库中,存储过程主要采用PL/SQL语言编写。相比传统的SQL命令,存储过程具有以下优势: ...

    PLSQL调试存储过程

    通过以上方法,我们可以系统地调试PLSQL存储过程,找出隐藏的问题,提升代码质量和效率。调试是软件开发过程中的重要环节,对于理解复杂的数据库逻辑尤其关键。熟练掌握PLSQL调试技巧,能帮助我们快速定位和解决问题...

    plsql之存储过程

    6. **调用和执行存储过程** 调用存储过程通常有两种方式:一是通过数据库客户端工具如SQL*Plus或Oracle SQL Developer;二是通过应用程序,如Java、Python等,利用JDBC或其他数据库连接库。 7. **存储过程的维护**...

    PLSQL入门存储过程(详细注释案例).pdf

    - **执行部分 (BEGIN-END)**:这是程序的核心部分,包含实际的操作指令,如过程调用、SQL 语句执行等。例如: ```sql BEGIN v_name := 'Hello World'; DBMS_OUTPUT.PUT_LINE(v_name); END; ``` - **异常处理...

    Oracle_PLSQL_存储过程

    - **存储过程作用:** 在Oracle中,存储过程可以用于封装这些规则和逻辑,使之成为可重用的组件。 **创建权限:** - **CREATE PROCEDURE权限:** 允许用户创建存储过程。 - **CREATE ANY PROCEDURE权限:** 允许...

    oracle 数据库 plsql 存储过程

    - **重用性**:存储过程可以被多个应用程序共享和调用。 #### 二、创建与管理存储过程 ##### 创建存储过程 要创建一个存储过程,首先需要具备`CREATE PROCEDURE`权限。如果希望其他用户也能使用该存储过程,则还...

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

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

    plsql的存储过程

    PL/SQL(Procedural Language/Structured Query Language)是Oracle数据库提供的一种编程语言,它结合了SQL的查询功能和过程式编程语言的控制结构。在PL/SQL中,存储过程是一种预编译的代码单元,可以包含SQL语句、...

    plsql之存储过程 数据库

    在调用时不需要提供初始值,存储过程执行完毕后,其值会被设置并返回给调用者。 - **IN-OUT类型参数**:既能传入又能传出,调用时可以设置初始值,存储过程可以修改这个值,并在返回时提供更新后的值。 3. **无...

    Oracle集合类型输出参数的PLSQL存储过程及其Java调用.docx

    存储过程因其高效执行、事务处理能力以及安全性,在数据库应用程序中被广泛应用。特别是使用Oracle数据库时,PL/SQL(一种专为Oracle设计的过程化语言)能够提供更高的性能和更低的网络负载。在实际开发过程中,当...

    基于oracle数据库的PLSQL编程以及存储过程的创建和使用资料.zip

    在Oracle数据库中,PL/SQL(Procedural Language/Structured Query Language)是一种结合了SQL语句和过程式编程语言的特性,用于编写数据库应用程序的语言。本资料主要关注PLSQL编程以及在Oracle中创建和使用存储...

    Oracle PlSql 存储过程

    Oracle PlSql 存储过程是 Oracle 数据库中的一种编程语言,用于实现复杂的业务逻辑和数据处理。下面是对 Oracle PlSql 存储过程的详细介绍: 一、 Oracle 存储过程目录 Oracle 存储过程目录是指 Oracle 数据库中...

    plsql存储过程源代码

    ”类型的示例,通常用于介绍如何在PL/SQL中编写和调用存储过程。 2. `2-var.sql`: 变量在PL/SQL中是必不可少的,此文件可能包含关于声明、初始化和操作变量的代码。在PL/SQL中,我们可以声明多种类型的变量,如数值...

    oracle触发器调用存储过程

    存储过程是预编译并存储在数据库服务器上的SQL程序,可以在应用程序中通过调用其名称来执行一系列复杂操作。存储过程提高了性能,因为它们只需要编译一次,并且可以通过参数传递值,从而实现代码重用性和灵活性。 #...

    pl sql批量执行多个sql文件和存储过程

    ### PL/SQL批量执行多个SQL文件和存储过程 在日常的数据库管理与开发工作中,经常需要执行大量的SQL脚本或调用多个存储过程。对于Oracle数据库而言,PL/SQL是一种非常强大的工具,它不仅可以用于编写复杂的数据库...

    Oracle+PlSql存储过程

    7. 使用Java调用Oracle存储过程分为三种情况:无返回值的过程、有单个返回值的过程和返回列表的过程。 **用Java调用Oracle存储过程总结** 1. 无返回值的存储过程:使用CallableStatement的`execute()`方法执行。 2....

    实验六:使用PLSQL编写存储过程访问数据库.ppt

    存储过程是一组预编译的SQL和PLSQL语句,可以被多次调用,提高了代码复用性和执行效率。Oracle提供了丰富的文档和资源来帮助开发者: - **Oracle® Database PL/SQL User's Guide and Reference** 和 **Oracle® ...

    使用PLSQL编写存储过程访问数据库.doc

    实验报告应详细记录每一步的操作和结果,包括创建表、编写和执行存储过程的过程。 通过这个实验,我们可以学习到: - 如何使用PL/SQL声明变量和游标。 - 如何编写和调用存储过程。 - 如何在PL/SQL中处理条件和异常...

Global site tag (gtag.js) - Google Analytics