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

游标带参数与不带参数

    博客分类:
  • Java
阅读更多
CREATE OR REPLACE PROCEDURE x_ne_change
AS
   CURSOR cur_new
   IS
      SELECT int_id, omc_id || ':' || msc_id || ':' || bsc_id AS related_id,
             omc_id, msc_id, bsc_id, ne_name, cell_id, lac, freq_band,
             trx_count, tch, sdcch, gprs_enabled, gprs_trx, dedicated_pdch,
             max_pdch, device_type, software_version, dumpfre_type, site_no,
             cell_no, rac, ncc, bcc, sms_cb_used, bsc_omc_int_id, omc_int_id,
             TIMESTAMP
        FROM appuser.K_C_CELL
       WHERE TIMESTAMP = '2004-04-23 8' AND cell_id < 2000;

   CURSOR cur_old (c_no NUMBER)
   IS
      SELECT int_id, omc_id || ':' || msc_id || ':' || bsc_id AS related_id,
             omc_id, msc_id, bsc_id, ne_name, cell_id, lac, freq_band,
             trx_count, tch, sdcch, gprs_enabled, gprs_trx, dedicated_pdch,
             max_pdch, device_type, software_version, dumpfre_type, site_no,
             cell_no, rac, ncc, bcc, sms_cb_used, bsc_omc_int_id, omc_int_id,
             TIMESTAMP
        FROM appuser.K_C_CELL
       WHERE TIMESTAMP = '2004-04-21 6' AND cell_id = c_no;
BEGIN
   FOR v_new IN cur_new
   LOOP
      FOR v_old IN cur_old (v_new.cell_id)
      LOOP
         BEGIN
            IF v_new.related_id <>; v_old.related_id
            THEN
               INSERT INTO TEST_NE_CHANGE
                           (omc_id, omc_int_id, ne_id,
                            old_value, now_value,
                            modify_item, modify_time
                           )
                    VALUES (v_new.omc_id, v_new.omc_int_id, v_new.cell_id,
                            v_old.related_id, v_new.related_id,
                            'related_id', v_new.TIMESTAMP
                           );

               COMMIT;
            END IF;

            IF v_new.tch <>; v_old.tch
            THEN
               INSERT INTO TEST_NE_CHANGE
                           (omc_id, omc_int_id, ne_id,
                            old_value, now_value, modify_item, modify_time
                           )
                    VALUES (v_new.omc_id, v_new.omc_int_id, v_new.cell_id,
                            v_old.tch, v_new.tch, 'TCH', v_new.TIMESTAMP
                           );

               COMMIT;
            END IF;
         END;
      END LOOP;
   END LOOP;
END;




CREATE OR REPLACE PROCEDURE w_ne_change
AS

   CURSOR cur_new
   IS
      SELECT int_id, omc_id || ':' || msc_id || ':' || bsc_id AS related_id,
             omc_id, msc_id, bsc_id, ne_name, cell_id, lac, freq_band,
             trx_count, tch, sdcch, gprs_enabled, gprs_trx, dedicated_pdch,
             max_pdch, device_type, software_version, dumpfre_type, site_no,
             cell_no, rac, ncc, bcc, sms_cb_used, bsc_omc_int_id, omc_int_id,
             TIMESTAMP
        FROM appuser.W_C_CELL
       WHERE TIMESTAMP = '2004-04-23 8' AND cell_id < 200;

   CURSOR cur_old
   IS
      SELECT int_id, omc_id || ':' || msc_id || ':' || bsc_id AS related_id,
             omc_id, msc_id, bsc_id, ne_name, cell_id, lac, freq_band,
             trx_count, tch, sdcch, gprs_enabled, gprs_trx, dedicated_pdch,
             max_pdch, device_type, software_version, dumpfre_type, site_no,
             cell_no, rac, ncc, bcc, sms_cb_used, bsc_omc_int_id, omc_int_id,
             TIMESTAMP
        FROM appuser.W_C_CELL
       WHERE TIMESTAMP = '2004-04-23 6' AND cell_id < 200;
BEGIN
   FOR v_new IN cur_new
   LOOP
      FOR v_old IN cur_old
      LOOP
         IF v_old.cell_id = v_new.cell_id
         THEN
            BEGIN
               IF v_new.related_id <>; v_old.related_id
               THEN
                  INSERT INTO TEST_NE_CHANGE
                              (omc_id, omc_int_id,
                               ne_id, old_value,
                               now_value, modify_item,
                               modify_time
                              )
                       VALUES (v_new.omc_id, v_new.omc_int_id,
                               v_new.cell_id, v_old.related_id,
                               v_new.related_id, 'related_id',
                               v_new.TIMESTAMP
                              );

                  COMMIT;
                 
               END IF;
            END;
         END IF;
      END LOOP;
   END LOOP;
END;




效率方面,你懂的
分享到:
评论

相关推荐

    游标参数的存储过程 存储过程高级教程

    本教程主要关注的是带游标参数的存储过程,这是一种高级用法,允许在存储过程中处理多条记录,特别适用于需要逐行处理数据的情况。 首先,我们要理解存储过程的基本概念。存储过程可以包含变量声明、条件判断、循环...

    游标与异常处理代码

    例如,输出指定部门的员工信息,我们可以定义一个带参数的游标: ```sql CURSOR c_employee(did NUMBER) IS SELECT employee_id, last_name, salary, department_id FROM employees WHERE department_id = did; `...

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

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

    oracle数据库游标使用例子

    可以定义带参数的游标,这样可以根据传入的参数动态地改变查询条件。例如,在示例中,游标`cur_para`接收一个`varchar2`类型的参数`id`,并根据该参数查询`books_name`。 5. **使用FOR循环的游标**: 在示例3中,...

    Oracle数据库游标使用大全

    `%TYPE`属性在PL/SQL中非常有用,它允许你声明的变量与表列的数据类型和大小保持一致。这有助于代码的灵活性和维护性,因为如果列的数据类型改变,不需要修改变量声明。例如: ```sql DECLARE v_employee_id ...

    oracle 游标 深入浅出 详解 精析 示例

    1. **定义/声明游标**:定义游标名和与其关联的SELECT语句,可以带有参数但不支持长度约束。例如: ```sql CURSOR c_employee(name VARCHAR2) IS SELECT * FROM employees WHERE last_name = name; ``` 2. **...

    双游标(thumb)自定义seekbar(带浮动textView)

    在自定义控件的构造函数中,我们可能需要传入一些参数,如游标的初始位置、颜色、字体大小等,以便于自定义样式。此外,还可以提供一些公开方法,比如设置游标的位置、获取选区范围等,以方便在其他类中调用。 为了...

    游标卡尺的使用说明

    2. 检查零位校准:轻轻推动尺框,使量爪合拢,观察游标“零”刻线是否与尺身“零”刻线对齐,同时游标的尾刻线与尺身相应的刻线也应对齐。若不一致,应送至专业部门进行调整。 3. 测量外径时,两外侧量爪应贴合在被...

    ORACLE游标学习

    **带参数的显式游标** 显式游标还可以带有参数,使得游标更具灵活性。参数可以在声明时指定,以便根据需要过滤查询结果。例如: ```sql DECLARE cursor mycur(m_deptno emp.deptno%TYPE) IS SELECT * FROM emp ...

    jdbcTemplate分页彻底解决,使用游标滚动

    在`JdbcTemplate`中,我们可以使用`callProcedure()`或`execute()`方法执行带有游标的SQL查询。例如,可以创建一个存储过程,该过程返回一个可滚动的结果集。然后,`JdbcTemplate`会使用`ResultSetExtractor`接口来...

    北大青鸟Oracle游标

    5. **带参数的游标**:为了提高游标的灵活性,可以声明带参数的游标,这样可以根据不同的输入参数来改变查询结果。例如,通过部门编号获取特定部门的员工信息。 6. **使用游标更新数据**:在处理数据时,如果需要...

    游标实例与返回结果集的存储过程

    这里,`emp_cursor` 是一个带参数的游标,其参数`dept_num`默认值为20。查询将返回`emp`表中`deptno`为20的所有`ename`和`sal`字段。 #### 1.3 使用游标变量 除了直接声明游标外,还可以定义游标变量,即`REF ...

    快速练习ORACLE游标习题及答案

    **解析**:这里定义了一个显式游标`job_cur`,并通过输入参数`ver_job`来指定职位,然后使用`FOR`循环遍历符合条件的员工信息。 #### 6. 根据职位调整员工薪资 ```plsql DECLARE CURSOR sal_cur IS SELECT * FROM...

    Oracle_的存储过程及游标

    存储过程可以接受输入参数,也可以返回结果,但不同于函数,它不需要返回一个特定的值。在Oracle中,存储过程由`CREATE PROCEDURE`语句创建,并可以通过`EXECUTE`命令执行。 1. **函数与存储过程的区别**: - 函数...

    plsql 游标 英文讲义

    显式游标同样支持带有参数的游标,允许程序员在声明时定义参数,以便在运行时向游标传递不同的值。 理解显式游标和隐式游标之间的区别是非常重要的。通过显式游标,程序员可以有更精细的控制数据库查询操作,并且...

    二十二高级显式游标计算机教学课件.pptx

    带参数的游标允许我们在声明游标时指定参数,并在打开游标时传入具体的值。这使得我们可以用相同的游标结构处理不同的查询,只需改变参数即可。例如,声明一个游标`emp_cursor`,它接受部门编号`p_deptno`和职位`p_...

    Orcale存储过程,游标,函数,简单易懂

    - **带参数游标**: ```sql DECLARE CURSOR c_emp (p_deptno emp.deptno%TYPE) IS SELECT ename, sal FROM emp WHERE deptno = p_deptno; v_ename emp.ename%TYPE; v_sal emp.sal%TYPE; BEGIN OPEN c_emp ...

    游标的相关知识和实例

    1. **不带参数的游标**:用于查询特定条件下的单行数据。例如,查询`empno=7788`的雇员姓名和工资。 2. **带参数的游标**:更灵活,允许用户通过参数动态地设置查询条件。示例中查询了部门编号为10的所有雇员姓名。...

    oracle 游标

    4. **带参数的游标(Parameterized Cursors)**: 我们可以定义带有参数的游标,这些参数可以在打开游标时传入,使得游标更加灵活。这在需要根据不同的条件处理数据时非常有用: ```sql DECLARE cursor_name ...

    oracle游标实例

    2. **带参游标**:第七个示例展示了如何定义一个带参数的游标。参数`vb`用于在`fa`表中筛选ID等于用户输入值的记录。在PL/SQL块中,用户可以输入`b`的值,然后在游标中使用这个值。 3. **游标更新行**:虽然示例中...

Global site tag (gtag.js) - Google Analytics