`

oracle 存储过程使用实例

 
阅读更多
1.建包

CREATE OR REPLACE PACKAGE PKG_XXX IS

       PROCEDURE proc_main ;
       PROCEDURE proc_xx1  ;
       PROCEDURE proc_xx1_rule(TABLE_NAME  IN VARCHAR2,xxx_NAME IN VARCHAR2);
END PKG_AM_EXP_PREWARNINGS;



2.建包体

CREATE OR REPLACE PACKAGE BODY PKG_XXX IS
  --定义时间  主要用于查询
  default_date constant VARCHAR2(10) := TO_CHAR(SYSDATE, 'YYYY-MM-DD');
  --定义字符串数组类型
  TYPE T_ARRAY IS ARRAY(50) OF VARCHAR2(20);

  --返回字符串数组函数
  FUNCTION GETARR RETURN T_REGION_ARRAY IS
    var_array T_ARRAY;
  BEGIN
    var_array := T_ARRAY('',    
                                '',
                                '');
    RETURN var_array;
  END GETARR;
      --主存储过程调用其他存储过程
       PROCEDURE proc_main AS
       BEGIN
         proc_xx1();
         proc_xx1_rule('','');
       END proc_prewarning_main;
       
      
       procedure proc_xx1 AS 
         --定义字符串数组
         type region_array is varray(50) of varchar2(20);   
        
         var_array1 region_array:=region_array('1','2',
                       '2','3','2',
                       '2','2','2','1','2');
         var_array2 region_array:=region_array('1','2',
                       '2','3','2',
                       '2','2','2','1','2');
         var_array3 region_array:=region_array('1','2',
                       '2','3','2',
                       '2','2','2','1','2');
         BEGIN
          
           for i in 1..var_array1.count loop
             PROC_LOAD_xx('AM_EXP_DEVICE_T',var_array1(i));
           end loop ;
            
            for i in 1..var_array2.count loop
             DBMS_OUTPUT.put_line(123);
             PROC_LOAD_xx('AM_EXP_WORK_CONDITION_T',var_array2(i));
           end loop ;
            
            for i in 1..var_array3.count loop
             PROC_LOAD_xx('AM_EXP_USEELECTRIC_T',var_array3(i));
           end loop ;
         END proc_prewarning_all_wud;
      
       PROCEDURE PROC_LOAD_xx(TABLE_NAME  IN VARCHAR2,
                                       xxx_NAME IN VARCHAR2) IS
         SQLSTR         VARCHAR2(1500);
         TYPENAME       VARCHAR2(20);
       BEGIN
         IF TABLE_NAME = 'AM1' THEN
           TYPENAME := '3';
         ELSIF TABLE_NAME = 'AM2' THEN
           TYPENAME := '2';
         ELSE
           TYPENAME := '1';
         END IF;
       
         SQLSTR := '';
        
         EXECUTE IMMEDIATE SQLSTR
           into xx, xx, xx;
        
         COMMIT;
       EXCEPTION
         WHEN OTHERS THEN
           ROLLBACK;
       END proc_xx1;
       
  procedure proc_xx1_rule(REGION_NAME IN VARCHAR2) IS
    SQLSTR         VARCHAR2(1500);
    --定义一个游标属性
    type RESULT_CUR is ref cursor;
    RESULT_CUR_REF   RESULT_CUR;
    --定义数组
    type region_array is varray(50) of varchar2(20); 
  BEGIN
    var_array1 region_array:=region_array('1','2',
                       '2','3','2',
                       '2','2','2','1','2');
    for i in 1 .. var_array1.count loop
      SQLSTR := '拼接SQL'
      ;
      DBMS_OUTPUT.put_line(SQLSTR);
      --游标结合SQL字符串
      OPEN RESULT_CUR_REF FOR SQLSTR;
      --插入相关信息
      loop
        fetch RESULT_CUR_REF
          into xx, xx, xx, xx;
        exit when RESULT_CUR_REF%NOTFOUND;
        --对取得的数据进行操作
      end loop;
    end loop;
  
    COMMIT;
  EXCEPTION
    WHEN OTHERS THEN
      ROLLBACK;
  END proc_xx1_rule;
END PKG_XXX; 



3.主要的地方

A.包中定义的存储过程如果没有参数则不需要括号。
B.包和包体中的存储过程要一一对应。
C.type region_array is varray(50) of varchar2(20); 是定义数组的意思。
D.定义一个游标属性 type RESULT_CUR is ref cursor;RESULT_CUR_REF   RESULT_CUR;

4.存储过程的DEBUG调试

1.首先右键该存储过程点击Add Debug Information
2.然后右键该存储过程点击Test
3.然后输入需要的参数或不输入
4.然后右键该存储过程点击View 点击行号出现红色叉叉表示断点
5.然后回到Test页面点击F9或页面上最左边的按钮 然后点击Run 一步一步执行则点击Run旁边左边的按钮就行
分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    Oracle存储过程中使用临时表

    本篇文章将深入探讨如何在Oracle存储过程中使用临时表,包括会话级临时表和事务级临时表。 ### 会话级临时表 会话级临时表(Session-Level Temporary Tables)只在创建它的会话内可见,并且在会话结束时自动删除。...

    用callabledStatement调用oracle存储过程实用例子(IN OUT 传游标)

    Oracle 存储过程调用 CallabledStatement 实用例子(IN OUT 传游标) 一、Oracle 存储过程简介 Oracle 存储过程是一种可以在 Oracle 数据库中存储和执行的程序单元。存储过程可以由多种语言编写,例如 PL/SQL、...

    oracle存储过程学习经典(实例)

    这个"Oracle存储过程学习经典(实例)"资源显然是为初学者设计的,旨在帮助他们掌握如何创建、执行和管理存储过程。 存储过程在数据库管理中扮演着关键角色,它可以提升系统的性能,通过减少网络流量和提供预编译的...

    Python使用cx_Oracle调用Oracle存储过程的方法示例

    本文实例讲述了Python使用cx_Oracle调用Oracle存储过程的方法。分享给大家供大家参考,具体如下: 这里主要测试在Python中通过cx_Oracle调用PL/SQL。 首先,在数据库端创建简单的存储过程。 create or replace ...

    oracle 存储过程 函数 dblink

    在这段Java代码中,我们使用了`CallableStatement`来调用Oracle存储过程`TESTA`。关键点包括: - `prepareCall`方法用于准备调用存储过程。 - 使用`setString`方法设置输入参数的值。 - 调用`execute`方法执行存储...

    oracle存储过程应用实例

    ### Oracle存储过程应用实例 #### 一、存储过程概述 存储过程是一种预先编写并编译好,存储在数据库中的程序代码。它能够接受输入参数,并根据这些参数执行一系列操作,最终返回结果。存储过程的优势在于它能够...

    pb中执行oracle存储过程脚本

    在描述中提到的“使用批处理进行oracle存储过程脚本的创建和更新的处理”,这可能意味着开发者使用批处理命令(如Windows的批处理文件`.bat`)来自动化执行创建或更新Oracle存储过程的任务。批处理文件可以包含一...

    oracle 存储过程实例

    oracle 存储过程 实例 教程 oracle 存储过程 实例 教程 对于初学者来说是很好的例题

    oracle存储过程实例

    Oracle存储过程是数据库管理系统中的一种重要特性,它允许...以上内容详细介绍了Oracle存储过程的概念、特点、语法结构以及参数的使用。通过存储过程,开发者能够构建复杂的应用逻辑,提高代码的组织性和数据库的性能。

    使用java实现oracle存储过程

    使用java实现oracle存储过程。 共有3个小例子。实现的功能 1、无返回值的存储过程 如 insert 2、有返回值的存储过程(非列表)select id from tab 3、返回列表 如:select * from tab 顺便鄙视下csdn,作为一个it...

    oracle的一个简单存储过程实例

    Oracle存储过程是数据库管理系统中的一种重要特性,它允许开发者编写包含一系列SQL语句和PL/SQL块的可重用代码段。在这个“Oracle的一个简单存储过程实例”中,我们可以看到如何在Oracle环境中创建、调用和管理存储...

    oracle 存储过程语法例子

    总结,这个例子中展示了Oracle存储过程的基本结构,包括包的创建、过程的定义、游标的使用、条件判断、动态SQL以及异常处理。这些都是在Oracle数据库环境中编写高级逻辑和数据操作时不可或缺的技能。通过理解和实践...

    oracle存储过程例子

    这篇博文“Oracle存储过程例子”可能提供了关于如何创建、调用和使用Oracle存储过程的实际示例。 首先,存储过程可以提高应用性能,因为它将多次执行的SQL语句预编译并存储在数据库中。每次调用时,只需要执行已...

    oracle存储过程学习经典[语法+实例+调用]

    在学习Oracle存储过程时,结合详细的文档如《oracle存储过程超详细使用手册.doc》和实例资料《oracle存储过程学习经典[语法+实例+调用].doc》会非常有帮助。这些文档通常会涵盖基础语法、实例解析、调用方法、异常...

    oracle存储过程使用游标对多表操作例子

    标题:“oracle存储过程使用游标对多表操作例子”直接指出了文章的主题是关于在Oracle环境下,如何利用存储过程和游标实现跨多个表的数据处理。描述部分重复了标题内容,强调了示例性质,表明文章将通过具体实例来...

    Oracle存储过程和函数(最详细包含emp 表实例操作,边看边操作)

    通过学习和实践这些Oracle存储过程和函数的实例,你可以更好地理解和掌握如何在实际项目中应用它们。Oracle 存储过程详解.doc文档可能包含了更多详细的步骤和示例,建议详细阅读,以深化对这一主题的理解。

    Oracle存储过程开发的要点

    Oracle存储过程是数据库管理系统Oracle中的一种重要特性,用于封装一系列SQL和PL/SQL代码,以实现特定的功能。在Oracle中,存储过程可以提高应用程序的性能,因为它减少了与数据库的交互次数,并允许在数据库级别...

    oracle存储过程语法及实例讲解

    ### Oracle存储过程语法及实例详解 #### 一、概述 Oracle存储过程是一种在数据库服务器上预编译并存储的程序块,它可以包含一系列SQL语句和控制流语句。存储过程提高了应用程序性能,并增强了数据的一致性和安全性...

    Oracle_存储过程exception异常处理大全及实例经典最终.docx

    ### Oracle 存储过程 Exception 异常处理详解 #### 1. 异常处理概念 在 Oracle 存储过程中,异常处理是一项非常重要的技术,它能够帮助开发人员处理那些不可预见的情况,确保程序的健壮性和稳定性。异常处理主要...

Global site tag (gtag.js) - Google Analytics