Oracle游标循环更新数据案例

declare
      v_XTXMBH number;
      v_ZJZJZJRQ  varchar2(40);
      cursor c_job is
       SELECT XT.XTXMBH AS XTXMBH, QJ.ZJZJZJRQ AS ZJZJZJRQ
         FROM XTXMXX XT, QJGLXX_ZQL_MID QJ
        WHERE XT.XTXMBH = QJ.XTXMBH
          AND XT.XTXMCLRQ >= ‘20120630‘
          AND (QJ.ZJQHZJRQ IS NULL OR QJ.ZJZJZJRQ IS NULL);
      c_row c_job%rowtype;
    begin
      for c_row in c_job loop
        v_XTXMBH:=c_row.XTXMBH;
        v_ZJZJZJRQ:=c_row.ZJZJZJRQ;
        IF (v_XTXMBH IS NOT NULL OR v_XTXMBH<>‘‘) THEN
          if (v_ZJZJZJRQ IS NULL OR v_ZJZJZJRQ=‘‘) then
            --UPDATE ZJ
           UPDATE QJGLXX_ZQL_MID T
              SET T.ZJZJZJRQ = ‘20000101‘, T.ZJZJZJJE = 0, T.LJZJZJJE = 0
            WHERE T.XTXMBH=v_XTXMBH;
          else
            --UPDATE QH
            UPDATE QJGLXX_ZQL_MID T
              SET T.ZJQHZJRQ = ‘20000101‘, T.ZJQHZJJE = 0, T.LJQHZJJE = 0
            WHERE T.XTXMBH=v_XTXMBH;
          end if;
         END IF;
      end loop; --循环结束
      commit; --提交处理后数据
    end;

Oracle游标循环更新数据案例

时间: 2024-10-10 07:31:31

Oracle游标循环更新数据案例的相关文章

Oracle游标-循环查询表中数据(表名),并执行

Oralce 表中存有一个字段,该字段存储表名,要把该表中的所有表名查询出来(即表名结果集),且执行结果集from 表名结果集: declare v_ccount varchar2(100); --定义一个游标变量 cursor c_job is --查询该表中的所有表名 select tablename from tbname; c_row c_job%rowtype; begin --循环待处理数据,即以上查出的结果集 for c_row in c_job loop ---执行语句 from

ORACLE游标循环【转】

ORACLE游标循环有几种用法,下面分别介绍一下. 首先定义游标和变量 CURSOR C1 IS SELECT  eNAME,ejob FROM emp WHERE deptno=10; v_NAME VARCHAR2(10); v_job VARCHAR2(10); 第一种:使用loop 循环 open c1; loop fetch c1 into v_name,v_job ; exit when c1%notfound; …… end loop colse c1; 这里需要注意,exit w

SqlServer 利用游标批量更新数据

原文:SqlServer 利用游标批量更新数据 SqlServer 利用游标批量更新数据 Intro# 游标在有时候会很有用,在更新一部分不多的数据时,可以很方便的更新数据,不需要再写一个小工具来做了,直接写 SQL 就可以了 Sample# 下面来看一个实际示例: Copy -- 声明字段变量 DECLARE @RegionCode INT; DECLARE @RegionName NVARCHAR(64); DECLARE @ProvinceId INT; -- 声明游标 DECLARE P

oracle 游标批量处理数据

declare --开始时间 v_date_start date:= to_date('2015-05-28 00:00:00', 'yyyy-mm-dd hh24:mi:ss'); --结束时间 v_date_end   date:= to_date('2015-11-01 00:00:00', 'yyyy-mm-dd hh24:mi:ss'); --临时变量 v_date_plus date; type type_policy_no is table of ply_base_info.pol

Sql Server 游标操作的例子,使用sql server 游标循环处理数据

GO -- ============================================= -- Author: zqt -- Create date: 2011-11-25 -- ============================================= create proc [dbo].[proc_get_product] @customerID int as --声明一个变量 declare @productid int; declare @productna

oracle 游标循环中 捕获异常 继续执行

declare       --类型定义         cursor c_eventstate       is       Select  CampaignId,phonenumber,PolicyNumber from mkt_eventstate a where synstate =0 and packagestate = 2 and errorcode = 6;       --定义一个游标变量v_cinfo c_emp%ROWTYPE ,该类型为游标c_emp中的一行数据类型    

oracle 游标循环, 查询,异常捕获,继续执行

declare       --类型定义       strsql string(500);        v_ErrorCode NUMBER;           -- Variable to hold the error message code           v_ErrorText VARCHAR2(200);    -- Variable to hold the error message text          cursor c_eventstate       is   

游标循环读取数据,更改数据

declare @tab_name varchar(100),@col_name varchar(100),@newResult varchar(max),@sql varchar(max) declare curTab_setData cursor fast_forward for select * from Table_1  where tab_name<>'[dbo].[STEM_Log]' open curTab_setData fetch next from curTab_setDa

21. oracle游标循环例子

create or replace procedure sp_addProjectQj( ret out number, flowid in number --流程Id) ascursor c_design is select * from LC_VR_Detail where lc_crm_visitreport_Id = flowid and dd_status != 2; c_row c_design%rowtype; v_id number;begin for c_row in c_de