`
心动音符
  • 浏览: 337160 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

存储过程 调用和调试

阅读更多
存储过程   
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得到该部门员工的平均工资。 
分享到:
评论

相关推荐

    PostgreSQL 存储过程调试

    本篇文章将深入探讨如何对PostgreSQL的存储过程进行调试,这对于优化数据库性能和解决复杂问题至关重要。 PostgreSQL的存储过程是由一系列SQL语句组成的代码块,可以被多次调用并执行,类似于编程语言中的函数。...

    SAP HANA 中调试存储过程

    SAP HANA为存储过程提供了内置的调试功能,这使得开发者能够方便地验证逻辑的正确性,追踪代码执行流程,检查变量值变化,从而对程序中的错误进行定位和修正。 SAP HANA中的存储过程通常是用SQLScript编写的,这是...

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

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

    oracle调用存储过程

    综上所述,Oracle调用存储过程涉及到许多方面,从创建、调用到参数管理和异常处理,都需要对Oracle的PL/SQL语法和数据库管理有深入理解。通过熟练掌握这些知识点,开发者可以更有效地利用存储过程来提升应用程序的...

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

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

    mysql存储过程调试工具

    此外,该工具可能还具备其他辅助调试功能,如调用堆栈显示,它能清晰地展示存储过程的调用顺序,帮助理解执行上下文;步进执行(Step Into/Over/Out)允许开发者逐步执行代码,观察每一步的影响;还有可能提供条件...

    abap调用hana存储过程.pdf

    ### ABAP调用HANA存储过程详解 #### 标题:ABAP调用HANA存储过程 #### 描述:本文档介绍了如何在ABAP程序中调用SAP HANA存储过程的方法。 #### 标签:ABAP、HANA #### 部分内容概述:本文档通过一个逐步教程的...

    Java对存储过程的调用方法

    6. **工具支持**:在开发过程中,有一些工具可以帮助我们更方便地调用存储过程,如MySQL Workbench、Oracle SQL Developer等,它们提供了图形化的界面来执行和调试存储过程。 7. **源码示例**:提供的两个文本文件...

    存储过程- 06.在应用程序中调用存储过程

    - **ORM框架**:Object-Relational Mapping(ORM)框架如Hibernate和Entity Framework也支持调用存储过程,开发者可以在ORM的映射配置中指定存储过程,然后在代码中像调用普通方法一样调用它。 3. **参数传递** -...

    存储过程调用java程序

    例如,对于Oracle数据库,我们可以使用Oracle SQL Developer或PL/SQL Developer等工具来编写、调试和管理存储过程。对于Java,IDE如Eclipse、IntelliJ IDEA等可以方便地创建和管理Java源代码。 在“sqlldr”这个...

    JAVA调用存储过程

    ### JAVA调用存储过程知识点详解 #### 一、无结果集返回的存储过程调用 在Java中调用不返回结果集的存储过程时,主要步骤包括建立连接、准备调用语句、设置输入参数、执行存储过程以及处理可能产生的警告信息。 1...

    存储过程调用命令.pdf

    - 监控和日志记录存储过程的执行,以便于调试和性能优化。 - 对敏感操作的存储过程进行适当的权限控制。 总的来说,存储过程是数据库管理和开发中的重要工具,通过活字格这样的工具,我们可以更方便地在应用中...

    mybatis调用存储过程

    MyBatis作为一款流行的Java持久层框架,它提供了调用存储过程的功能,使得开发者能够方便地在Java应用中利用数据库的存储过程。下面将详细介绍如何在MyBatis中调用存储过程以及相关的知识点。 1. MyBatis概述 ...

    执行存储过程的代码和数据库脚本

    存储过程是数据库管理系统中的一个重要组成部分,它是一组为了完成特定功能的SQL语句集合,预编译后存储在数据库中,可以按需调用,提高了数据操作的效率和安全性。本文将围绕“执行存储过程的代码和数据库脚本”这...

    调用带参数的存储过程

    通过创建和调试存储过程,开发者能够有效地提高应用程序的性能和安全性。 #### 创建带参数的存储过程 首先,我们来看如何创建一个带参数的存储过程。以SQL Server为例,在T-SQL中可以通过`CREATE PROCEDURE`语句来...

    帆软报表Oracle存储过程解决storeParameter1参数试用插件

    在IT行业中,帆软报表是一款广泛应用的报表设计和数据分析工具,尤其在...同时,这也提醒我们在集成不同组件时,了解其内部工作原理和可能出现的问题,以及如何利用官方提供的工具和资源进行调试和优化,是非常重要的。

    hibernate调用存储过程的方法调用

    测试时,可以使用日志框架(如Log4j)输出相关信息,以便于调试和理解过程执行情况。 总结,调用Hibernate的存储过程涉及配置、创建Session、编写SQL查询、设置参数、执行存储过程和处理结果等多个步骤。通过学习和...

    hibernate调用存储过程

    Hibernate提供两种调用存储过程的方法:使用`Session.createSQLQuery()`和使用`StoredProcedureQuery`。 - **使用`Session.createSQLQuery()`** 这种方法适用于简单的存储过程调用。你可以构建一个SQL查询字符串...

Global site tag (gtag.js) - Google Analytics