`
xurichusheng
  • 浏览: 344721 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

【Oracle】动态SQL与游标

阅读更多

 

Oracle 存储过程,实现:根据存储过程入参拼接动态的查询SQL,将查询结果存入游标中,再从游标中取出数据,存入另一张表中。

 

下面的PL/SQL中,核心即为 OPEN C_UNITCIREF_TMP FOR 'SELECT CIMID FROM ' || TABLE_NAME;

 

CREATE OR REPLACE PROCEDURE P_SAVE_DEVDICT(DEVTYPE_NAME IN VARCHAR2, -- 设备类型名称
                                           TABLE_NAME IN  VARCHAR2,  -- 表名
                                           IS_SUCC      OUT VARCHAR2) IS
  -- 设备类型ID
  V_TYPE_ID VARCHAR2(42) := '';

  V_SQL VARCHAR2(100) := '';

  V_CIMID VARCHAR2(64) := '';

  TYPE TYPE_CURSOR IS REF CURSOR; -- 游标

  C_UNITCIREF_TMP TYPE_CURSOR;
  
BEGIN

  IS_SUCC := '0';

  -- 根据设备类型名称查找对应的设备类型ID
  SELECT ID
    INTO V_TYPE_ID
    FROM T_DEV_TYPE
   WHERE NAME = '' || DEVTYPE_NAME || '';

  OPEN C_UNITCIREF_TMP FOR 'SELECT CIMID FROM ' || TABLE_NAME;
  LOOP
     FETCH C_UNITCIREF_TMP INTO V_CIMID;
     EXIT WHEN C_UNITCIREF_TMP%NOTFOUND;
     INSERT INTO T_DEV_DICT
      (ID, CIMID, TYPE_ID)
    VALUES
      (SYS_GUID(), V_CIMID, V_TYPE_ID);
  END LOOP;
  
  COMMIT;
  
  IS_SUCC := '1';
  
EXCEPTION
  WHEN OTHERS THEN
    ROLLBACK;
    IS_SUCC := '-1';
    DBMS_OUTPUT.PUT_LINE(SQLERRM);
END P_SAVE_DEVDICT;
/

 

分享到:
评论

相关推荐

    静态、动态sql及各种游标

    静态、动态SQL及各种游标 静态SQL和动态SQL是两种不同的SQL语句执行方式,分别应用于不同的场景中。静态SQL是指在PL/SQL中直接运行的SQL语句,没有什么特别之处。动态SQL则是指利用EXECUTE IMMEDIATE语句执行的SQL...

    多个ORACLE 游标+SQL 游标 小例子+帮助文档

    SQL中的游标与Oracle类似,但语法稍有不同。在SQL Server或MySQL中,我们可以使用DECLARE、OPEN、FETCH和CLOSE语句来管理游标。以下是一个SQL Server的例子: ```sql DECLARE @var1 datatype1, @var2 datatype2; ...

    oracle数据库的游标

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

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

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

    oracle 管道函数+动态游标

    根据提供的Oracle管道函数和动态游标的代码片段及描述,我们可以深入了解其背后的技术要点与实现细节。下面将逐一解析这些知识点。 ### Oracle管道函数 管道函数(Pipe-lined Function)是Oracle中一种特殊类型的...

    Oracle数据库添加 更新 游标 过程 Java Project

    在这个Java项目中,我们将探讨如何在Oracle数据库中添加、更新数据,并利用游标处理过程,这些都是数据库操作的重要组成部分。 首先,让我们详细了解一下Oracle数据库的“添加”操作。在Oracle中,我们通常使用SQL...

    SQL经典游标使用方法

    综上所述,理解并熟练掌握SQL游标是提升数据库操作能力的重要步骤。通过游标,我们可以实现更加灵活和精细的数据处理,但也需要注意在性能和灵活性之间找到平衡。通过阅读和实践上游水位年报查询.txt、龙摆尾(坚行...

    Oracle存储过程游标详解

    隐式游标是所有 DML 语句为隐式游标,可以通过隐式游标属性获取 SQL 语句信息。显示游标是用户显示声明的游标,即指定结果集。当查询返回结果超过一行时,就需要一个显式游标。 REF 游标是动态关联结果集的临时对象...

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

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

    oracle笔记游标的使用

    oracle笔记游标的使用,游标的详细代码案例,游标知识点笔记!

    整理:oracle pl/sql 入门+ 数组使用+游标+动态SQL

    - 游标FOR LOOP:与动态SQL结合,可以方便地遍历和处理动态查询结果。 在实际开发中,掌握这些基本概念和技巧,可以有效提升Oracle数据库应用程序的效率和质量。通过阅读这个文档,你将获得关于Oracle PL/SQL的...

    Oracle教案 Oracle 存储过程 游标 SQL语句 PL/SQL

    Oracle 教案:深入理解 Oracle 存储过程、游标与 SQL 语句及 PL/SQL Oracle 是全球领先的数据库管理系统提供商,不仅提供数据库产品,还包括中间件、云计算服务等全面的企业级解决方案。"Oracle"一词源于古希腊神话...

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

    在Java编程中,与Oracle数据库交互是常见的任务之一,尤其是当需要执行复杂的SQL操作或存储过程时。本篇文章将深入探讨如何使用Java调用Oracle存储过程,并通过游标获取存储过程中返回的临时表数据。 首先,Oracle...

    oracle函数触发器游标等几个小例子

    Oracle数据库是世界上最流行的数据库管理系统之一,它提供了丰富的功能来处理数据,包括函数、游标和触发器。在本文中,我们将深入探讨这些概念,并通过一些实际的例子来理解它们的用法。 1. **Oracle函数**:函数...

    Oracle游标使用案例大全

    10. **游标与事务管理** - 游标操作可以包含在事务中,确保数据的一致性和完整性。 - 提交或回滚事务可能影响游标的状态,因此在事务边界处正确管理游标至关重要。 通过学习这些案例,你可以了解如何在实际应用中...

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

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

    ORACLE 游标使用示例

    在"游标.txt"文件中,可能包含了更多关于Oracle游标的使用实例和技巧,包括游标的声明、动态游标、游标变量、游标表达式以及游标在存储过程和函数中的应用。这些内容可以帮助你更深入地理解和掌握Oracle游标,提高你...

    ORACLE中的游标汇总

    游标在ORACLE数据库中是处理SQL查询结果集的关键工具,它允许程序员逐行处理查询结果,而不是一次性加载所有数据。游标对于处理大量数据或需要分步处理数据的复杂业务逻辑尤其有用。 1. 静态游标 - **显式游标**:...

    Oracle存储过程out游标

    在这个场景中,我们有三个文件:TESTPACKAGE.txt,CURSOR_TEST2.txt和OracleProcedure.java,分别涉及Oracle存储过程的创建、游标的使用以及Java代码如何与Oracle存储过程交互。 首先,`TESTPACKAGE.txt`很可能包含...

Global site tag (gtag.js) - Google Analytics