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

oracle 含参带游标的存储过程

阅读更多

    系统中有个模块的基础数据需要导到数据库,由于数据量比较大,而且表格内容分布较凌乱。就先将数据导入临时表,然后根据临时表进行有效的检索并添加到对应的表中。今天下午写了个含有参数,带游标的存储过程。算是把这个问题给解决了。

    本人需求大致如下:现有临时表"Sheet1$",数据是直接从excel的sheet1中读取然后自定义的,所以表名比较怪异。还有两张表分别是f_template,f_content.表结构如下:


create table f_template
(
 tpl_id varchar2(20) primary key,
 tpl_name varchar2(100) ,
 work_type varchar2(10) ,
 vol_level varchar2(15) ,
 org_id varchar2(10) ,
 create_date timestamp
)

create table f_content
(
 rc_id varchar2(20) primary key,
 project_name varchar2(100),
 content varchar2(2000),
 control_measure varchar2(2500),
 is_public varchar2(10),
 tpl_id varchar2(20),
 foreign key tpl_id references to f_template(tpl_id)
)

alter table f_content
add constraint fk_content_template 
foreign key(tpl_id) references f_template(tpl_id);

 

create or replace procedure pro_insert_temp
(
 tplid in number,--风险辨识范本id
 rcid  in number,--风险辨识范本内容id
 worktype in varchar2,--风险类型
 orgid in varchar2--市局组织id
)
 as
 cur_tplid number :=tplid;--将输入参数tplid赋值给当前
 cur_rcid  number :=rcid; --将输入参数rcid赋值给当前
 tplname "Sheet1$".A%type;--风险辨识项目
 last_tplname "Sheet1$".A%type :='def';--上一风险辨识项目
 pubmark "Sheet1$".B%type;--是否公共
 projectname "Sheet1$".C%type;--辨识项目
 content "Sheet1$".D%type;--辨识内容
 measure "Sheet1$".E%type;--控制措施
 cursor c_sheet is select a,b,c,d,e from "Sheet1$";

begin
    open c_sheet ;--打开游标
    loop
    fetch c_sheet into tplname, pubmark, projectname, content, measure;--游标下移
    exit when c_sheet %notfound;--退出条件
   
   if(last_tplname='def' or last_tplname <> tplname) --判断是否同一风险辨识范本,不是则进入
  then
  cur_tplid:=cur_tplid+1;  --范本id自增长
      insert into f_template(tpl_id,tpl_name,work_type,org_id,create_date)--添加范本
      values(cur_tplid ,tplname ,worktype ,orgid,sysdate);
        last_tplname:=tplname;     
  end if; 
   
 cur_rcid:=cur_rcid+1;--范本内容id自增长
 insert into f_content(rc_id,project_name,content,control_measure,is_public,tpl_id)
 values(cur_rcid,projectname,content,measure,pubmark,cur_tplid);--添加范本内容记录

    end loop;--游标循环结束
    close c_sheet;--关闭游标
end pro_insert_temp;--存储过程结束


exec pro_insert_temp(0,0,'变电检修','3');

分享到:
评论

相关推荐

    Oracle存储过程、游标、函数的详解

    ### Oracle存储过程、游标、函数的详解 #### 一、概述 在Oracle数据库中,存储过程、游标和函数是非常重要的组成部分,它们为数据库管理提供了强大的编程能力。通过学习这些概念,我们可以更加灵活地管理和操作...

    Oracle存储过程游标详解

    "Oracle存储过程游标详解" Oracle 存储过程游标是指在 Oracle 数据库中使用游标来实现对结果集的处理和操作。游标可以分为静态游标和REF游标两种类型。静态游标是指结果集已经确实(静态定义)的游标,可以进一步...

    Oracle存储过程out游标

    Oracle存储过程中的“Out”游标是数据库编程中一种常用的技术,主要用于在PL/SQL块中返回结果集到调用者。在这个场景中,我们有三个文件:TESTPACKAGE.txt,CURSOR_TEST2.txt和OracleProcedure.java,分别涉及Oracle...

    Java调用oracle存储过程通过游标返回临时表

    本篇文章将深入探讨如何使用Java调用Oracle存储过程,并通过游标获取存储过程中返回的临时表数据。 首先,Oracle存储过程是一种在数据库端执行的预编译SQL语句和PL/SQL代码集合。它可以接收参数、执行业务逻辑并...

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

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

    oracle存储过程返回游标数据集

    存储过程中通过返回数据集,通过游标方式实现,以及在java中如何接收的整个过程

    oracle存储过程游标

    ### Oracle 存储过程与游标使用详解 在Oracle数据库管理中,存储过程与游标是两个非常重要的概念。它们可以提高数据处理的效率、增强应用程序的灵活性,并且能够简化复杂的数据库操作。本文将根据提供的内容,深入...

    java调用oracle存储过程(游标)相关

    本文将深入探讨如何使用Java来调用Oracle存储过程,特别是涉及游标的场景。 首先,Oracle存储过程是一种预编译的SQL和PL/SQL代码块,可以在数据库服务器端执行,提供了一种封装业务逻辑的方式。而游标(Cursor)在...

    ORACLE 游标 异常 存储过程

    在本篇讨论中,我们将深入理解Oracle游标、异常处理以及如何在存储过程中使用它们。 1. **Oracle游标**: - **定义**:Oracle游标是数据库系统提供的一种机制,用于在结果集中定位并处理单条记录。它实际上是一个...

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

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

    Oracle存储过程实例使用显示游标

    在本例中,“Oracle存储过程实例使用显示游标”着重展示了如何在存储过程中调用函数,并通过游标来处理和更新数据。 首先,我们需要了解存储过程的基本结构。一个存储过程通常包含以下部分: 1. **声明部分**:在...

    存储过程 游标 oracle

    存储过程 游标 oracle 存储过程 游标 oracle 存储过程 游标 oracle 存储过程 游标 oracle

    oracle 的函数、存储过程、游标、简单实例

    本主题将深入探讨Oracle中的几个核心概念:函数、存储过程、游标以及简单的实例,这些都是数据库管理员和开发人员日常工作中不可或缺的部分。 首先,我们来了解**Oracle函数**。函数是预定义的代码块,接受零个或多...

    oracle数据库的游标

    游标是Oracle数据库中一个重要的概念,它是一种在内存中用于存储SQL查询结果的临时工作区域。使用游标可以方便地访问查询结果集中的每一行,这对于处理大量数据是非常有用的。游标主要分为两种类型:显式游标和隐式...

    JAVA调用ORACLE存储过程游标使用

    在Java编程中,调用Oracle数据库的存储过程并处理返回的游标是一项常见的任务。Oracle存储过程可以封装复杂的业务逻辑,而游标则用于在结果集上进行迭代,特别是当结果集太大,不适合一次性加载到内存时。下面将详细...

    oracle存储过程、游标、函数

    **二、Oracle游标** 游标(Cursor)是数据库系统中用于处理单条记录的一种机制。在Oracle中,游标允许我们遍历查询结果集,一次处理一条记录。游标的使用场景包括循环处理结果集、有条件地更新或删除数据等。 1. **...

    C#调用带游标的oralce存储过程

    本示例主要讲解如何在C# Winform应用中调用带游标的Oracle存储过程,以及处理返回的输出参数。 首先,确保你的开发环境已经安装了Oracle的数据提供程序,如ODP.NET。这将允许C#与Oracle数据库进行交互。在NuGet包...

    oracle 存储过程 使用游标 判断2表 新增更新操作

    oracle存储过程使用游标判断2表差异,进行新增更新操作

    oracle 隐式游标,显示游标,游标循环

    ### Oracle中的游标详解 #### 一、引言 在Oracle数据库中,游标是一种非常重要的机制,它允许用户在程序中对查询结果进行逐行处理。游标分为两种主要类型:**隐式游标**和**显示游标**。此外,还可以利用游标进行...

    利用游标返回结果集的的例子(Oracle 存储过程).doc

    在这个例子中,我们将探讨如何通过存储过程和游标返回结果集。游标允许我们在处理数据时逐行移动,这对于需要循环访问数据库记录的情况非常有用。 首先,我们创建了一个名为`types`的程序包,它定义了一个名为`...

Global site tag (gtag.js) - Google Analytics