`

存储过程的调用和执行

阅读更多

存储过程
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;
 

 

分享到:
评论

相关推荐

    Oracle存储过程调用bat批处理脚本程序

    首先,`Oracle存储过程`是一种预编译的SQL和PL/SQL代码集合,可以被多次调用以执行特定的任务。它们提高了性能,降低了网络流量,并简化了数据库管理。在存储过程中调用外部脚本可以扩展Oracle的功能,比如自动化...

    SQLServer存储过程调用WebService

    #### 三、编写存储过程调用 WebService ##### 3.1 创建 WebService 类型的扩展存储过程 在 SQL Server 中,可以通过创建一个扩展存储过程来调用 Web Service。具体步骤如下: 1. **定义 WebService 类型**:首先...

    ORACLE的存储过程的异步调用

    本文讨论了 ORACLE 存储过程的异步调用方法,旨在解决客户端长时间等待存储过程执行的问题。主要思路是使用 DBMS_JOB 包将主处理存储过程作为任务提交到任务队列中,并通过 DBMS_PIPE 包将处理情况放在管道中,最后...

    pb调用存储过程

    4. **DataWindow对象**:如果你想要在DataWindow中使用存储过程,可以设置DataWindow的SQL源为存储过程,然后在适当的方法(如RowChange, Fetch等)中调用执行。 其次,关于**存储过程的创建**,在提供的描述中,...

    java调用存储过程(含out参数)

    在Java编程中,调用...理解如何设置`IN`和`OUT`参数,并正确地执行和获取结果,将有助于提高代码的效率和可维护性。希望这个详细讲解对你有所帮助,如果你在实践中遇到任何问题,记得查阅相关文档或寻求社区支持。

    Informatica调用存储过程图文流程

    6. 保存和运行:保存 Mapping,之后可以运行 Mapping,以便执行调用存储过程的操作。 Informatica 调用存储过程的优点 使用 Informatica 调用存储过程可以带来多种优点,例如: * 提高数据集成速度:使用存储过程...

    java 调用存储过程

    在Java编程中,调用存储过程是连接数据库并执行预定义SQL代码的一种常见方式。存储过程是由数据库管理系统(如MySQL, Oracle, SQL Server等)编译并存储的一组操作,可以包含复杂的逻辑、条件判断、循环等,提高数据...

    springboot mybatis 动态调用oracle存储过程,通过存储过程名称,就能动态调用存储过程、java动态调用or

    能不能写个动态的业务,只输入存储过程名称,自动获取存储过程参数,并且参数的数据从前台传递过来...只根据输入不同的存储过程名称、参数内容,自动调用不同的存储过程。 已经使用在多个项目中 全开源项目 请放心下载

    存储过程调用.doc

    ### 存储过程调用详解 #### 一、目的与要求 存储过程是数据库中预编译好的SQL脚本,可以提高数据处理效率并增强安全性。本次内容的主要目的是让学习者能够熟练掌握如何创建、调用及删除存储过程,并通过实践加深对...

    hibernate调用存储过程

    hibernate调用存储过程 hibernate调用存储过程 hibernate调用存储过程 hibernate调用存储过程 hibernate调用存储过程 hibernate调用存储过程 hibernate调用存储过程

    C# winform调用SQL存储过程-菜鸟入门 详细注释

    内容概要:简单的C# winform调用存储过程实例,创建存储过程入参,通过SqlConnection对象和SqlCommand对象调用存储过程,获取存储过程的出参并显示出来,详细代码注释,希望对用到C#调用存储过程的小伙伴有帮助 ...

    在VB6.0中调用SQL Server的存储过程.pdf

    在VB6.0中调用SQL Server的存储过程是VB开发者经常遇到的问题,本文将详细介绍如何在VB6.0中调用SQL Server的存储过程,并对存储过程的优点和使用方法进行了详细的解释。 首先,存储过程是一种封装方法,用于重复...

    ibatIS调用存储过程

    ibatIS调用存储过程是数据库操作中常见的一种技术,特别是在复杂的业务逻辑处理或数据批量操作时,存储过程能够提供更高的效率和更好的性能。本文将深入探讨如何在ibatIS框架中调用存储过程,以及涉及到的相关知识点...

    Java实现调用MySQL存储过程详解

    在数据库管理中,存储过程(Stored Procedure)是一种预编译的SQL代码集合,它封装了特定的功能,并在需要时由应用程序调用执行。存储过程在大型数据库系统中扮演着重要角色,因为它能提高性能、增强安全性、减少...

    mySQL存储过程调用

    接下来,使用`mysql_query()`执行`CALL`语句来调用存储过程。在这个过程中,可以将之前设置的变量作为参数传递给存储过程。 ```php $res = mysql_query("call aa(@a)", $dblink); ``` #### 4. 获取结果 最后,...

    C#中调用Oracle存储过程

    4. **设置命令类型**:通过`CommandType.StoredProcedure`指定该命令为存储过程调用。 5. **添加参数**:使用`Parameters.Add`方法向命令对象添加参数,并设置参数的方向(输入或输出)及值。 6. **执行存储过程**:...

    Ibatis调用存储过程调用存储过程

    总的来说,这主要包括三个方面的工作:定义XML映射文件中的存储过程参数映射和调用方式、实现Java层的DAO接口以及在数据库中创建对应的存储过程。这些步骤结合起来,使得开发者能够在Ibatis框架下灵活高效地使用存储...

    启动SQL Server时自动执行存储过程

    如果需要在启动时执行多个过程,但不需要并行执行,可以指定一个过程作为启动过程,让该过程调用其它过程。这样就只占用一个连接。 在启动时恢复了最后一个数据库后,即开始执行存储过程。若要跳过这些存储过程的...

    VB实现SQL Server 2000存储过程调用

    存储过程是存储在服务器上的一组预编译的Transact-SQL语句,是一种封装重复任务操作的...本文以SQL Server2000存储过程为例,探讨了存储过程的优点,并以Visual Basic6.0程序设计语言给出了调用存储过程的关键代码。

Global site tag (gtag.js) - Google Analytics