`

oracle 循环使用

阅读更多

3循环使用

BEGIN

DECLARE  p_name varchar(100);

         a number;       

BEGIN 

  a:=1;

loop

select USER_NAME into p_name from U_USER WHERE fullname='xlc';

dbms_output.put_line(p_name||a);

exit  WHEN  (a=5);

a :=a+1;

   END loop;

END;

end;

 

--4:while 循环

begin

DECLARE  p_name varchar(100);

           a number;       

BEGIN 

  a:=1;

while (a<=5) loop

select USER_NAME into p_name from U_USER WHERE fullname='xlc';

dbms_output.put_line(p_name||a);

   a :=a+1;

   END loop;

END;

END;

SELECT user_name from (SELECT ROWNUM as n,u.* from U_USER u) where n <=2

 

--5:for in 使用cursor 

BEGIN

DECLARE p_name VARCHAR(100);

CURSOR culResult is  SELECT user_name  from (SELECT ROWNUM as n,u.* from U_USER u) where n <=2;

BEGIN 

FOR a in culResult loop

BEGIN 

p_name :=a.user_name;

dbms_output.put_line(p_name||' ok');

END;

END loop;

END;  

END;

**/

http://wenku.baidu.com/link?url=kqIBe8JDBYnE3lLGyan5LzAEgvpHinyZqxrguUE3WNOgNXLx3Na6XQrUZwO_jd6VWTGJ9czS8NEwzhkhfpyzUxWBn36KmJhw8KFz9prM20i

/**

--3循环使用

BEGIN

DECLARE  p_name varchar(100);

         a number;       

BEGIN 

  a:=1;

loop

select USER_NAME into p_name from U_USER WHERE fullname='xlc';

dbms_output.put_line(p_name||a);

exit  WHEN  (a=5);

a :=a+1;

   END loop;

END;

end;

 

--4:while 循环

begin

DECLARE  p_name varchar(100);

           a number;       

BEGIN 

  a:=1;

while (a<=5) loop

select USER_NAME into p_name from U_USER WHERE fullname='xlc';

dbms_output.put_line(p_name||a);

   a :=a+1;

   END loop;

END;

END;

SELECT user_name from (SELECT ROWNUM as n,u.* from U_USER u) where n <=2

 

--5:for in 使用cursor 

BEGIN

DECLARE p_name VARCHAR(100);

CURSOR culResult is  SELECT user_name  from (SELECT ROWNUM as n,u.* from U_USER u) where n <=2;

BEGIN 

FOR a in culResult loop

BEGIN 

p_name :=a.user_name;

dbms_output.put_line(p_name||' ok');

END;

END loop;

END;  

END;

**/

 

1:先执行:创建MD5

 

CREATE OR REPLACE 

FUNCTION MD5(

passwd IN VARCHAR2)

RETURN VARCHAR2

IS

retval varchar2(32);

BEGIN

retval := utl_raw.cast_to_raw(DBMS_OBFUSCATION_TOOLKIT.MD5(INPUT_STRING => passwd)) ;

RETURN retval;

END;

 

 

2:删除无效数据

DELETE from U_USER WHERE last_logtime  is NULL

 

 

3:修复总部员工编号重复

BEGIN

DECLARE 

tempSize VARCHAR(20);

i number;

CURSOR user_cur IS

 SELECT USER_ID,JOB_NO from U_USER WHERE job_no IN(SELECT JOB_NO FROM  CLSPUSER.U_USER  GROUP BY JOB_NO HAVING count(1)>1);

c_row user_cur%rowtype;

BEGIN

FOR c_row IN user_cur loop

   SELECT max(substr(JOB_NO,length(JOB_NO)-3,length(JOB_NO)))+1 INTO tempSize from U_USER  WHERE JOB_NO LIKE 'ZHHQ%';

   i:=to_number(length(tempSize));

       if(i=1) then

tempSize:='ZHHQ000';

 ELSE IF (i=2) THEN

tempSize:='ZHHQ00';

 dbms_output.put_line(tempSize);

         ELSE if (i=3) then

          tempSize:='ZHHQ0';

 dbms_output.put_line(tempSize);

          end if;

          end if;

end if;

--修改

UPDATE U_USER 

    SET 

        user_name=(SELECT  tempSize|| (max(substr(JOB_NO,length(JOB_NO)-3,length(JOB_NO)))+1) FROM  CLSPUSER.U_USER  WHERE JOB_NO LIKE 'ZHHQ%'),

        password='123456',

        passwd_MD5=lower(substr(MD5('123456'), 11, 16)),

        job_no=(SELECT  'ZHHQ000'|| (max(substr(JOB_NO,length(JOB_NO)-3,length(JOB_NO)))+1) FROM  CLSPUSER.U_USER  WHERE JOB_NO LIKE 'ZHHQ%')

   WHERE USER_ID=c_row.user_ID;

END loop;

end;

END;

 

 

4:在执行批量修改

merge into  CLSPUSER.U_USER clsp

 using (SELECT emp_no, substr(id_card, length(id_card) - 6, 6) password from SALARYUSER.crf_salary_p2p_emp) sale

 ON (clsp.job_no = sale.emp_no)

      WHEN matched THEN

        UPDATE

           SET clsp.user_name  = sale.emp_no,

               clsp.password   = sale.password,

               clsp.passwd_md5 = (SELECT lower(substr(MD5(sale.password), 11, 16))  from dual);

分享到:
评论

相关推荐

    oracle循环插入

    oracle循环插入oracle循环插入oracle循环插入oracle循环插入oracle循环插入oracle循环插入oracle循环插入oracle循环插入

    Oracle 循环

    Oracle 循环 Oracle 循环是一种常用的控制结构,在 Oracle 数据库中广泛应用于实现复杂的业务逻辑。在本资源中,我们将介绍 Oracle 中的三种循环结构:For 循环、While 循环、Loop 循环,并通过实例代码讲解它们的...

    Oracle循环插入

    Oracle循环插入,用于添加测试数据。

    Oracle循环示例

    ### Oracle循环示例详解 #### 一、概述 在Oracle数据库中,循环是处理重复执行相同或相似任务的重要工具之一。通过循环结构,可以有效地控制程序的流程,并且能够简化复杂的逻辑处理。本文将对提供的Oracle循环...

    kettle oracle循环分页迁移数据的完整例子,生成txt后FTP上传到远程服务器

    【标题】"kettle oracle循环分页迁移数据的完整例子,生成txt后FTP上传到远程服务器"揭示了几个关键的IT知识点,主要包括: 1. **Kettle(Pentaho Data Integration,PDI)**:Kettle是一款开源的数据集成工具,...

    oracle循环游标

    在Oracle数据库中,循环游标是一种非常重要的编程技术,它允许开发者通过循环结构来处理查询结果集中的每一行数据。这种技术在处理大量数据时尤为有用,因为它可以逐行访问数据,而无需一次性将所有数据加载到内存中...

    ORACLE数组使用方法

    ORACLE 数组使用方法 Oracle 数组是一种复杂的数据类型,可以存储多个元素,数组可以分为固定数组和可变数组两种类型。在 Oracle 中,数组可以用来存储大量的数据,并且可以通过索引来访问数组中的元素。 固定数组...

    oracle不使用oracleasm的包配置ASM磁盘配置方法

    ### Oracle 不使用 OracleASM 的包配置 ASM 磁盘配置方法 #### 概述 在 Oracle 数据库系统中,自动存储管理(ASM)是用于管理数据库文件的一种高性能、高可用性的解决方案。通常情况下,ASM 依赖于 Oracle 提供的 ...

    Oracle 游标循环

    ### Oracle游标循环详解 #### 一、引言 在Oracle数据库编程中,游标是一种非常重要的机制,用于处理查询结果集。通过游标,我们可以逐行读取数据,并执行复杂的逻辑操作。本文将详细介绍Oracle中三种常见的游标...

    Oracle中的三种循环用法(Loop、For、While)

    Oracle中的三种循环用法(Loop、For、While) Oracle中的循环语句是PL/SQL语言中的一种基本结构,用于重复执行某些语句,以达到某些目的。下面将详细介绍Oracle中的三种循环用法:Loop、For、While。 Loop 循环 ...

    Oracle PLSQL存储过程循环LOOP跳处循环、退出循环、终止循环流程详解与实战指南

    1、全面覆盖:本资源涵盖了退出当前循环并结束整个循环、结束循环、跳过当前循环、终止循环等多种控制...9、本资源适合所有对Oracle PL/SQL感兴趣的开发者,无论是新手入门,还是资深专家,都能从中获得实用的技能。

    ORACLE 游标使用示例

    下面,我们将深入探讨Oracle游标的使用示例及其相关的知识点。 首先,游标的基本概念是它提供了一种方式来跟踪并控制SQL查询的结果集。在Oracle中,游标有四种状态:未打开、已打开、正在提取和已关闭。以下是一个...

    oracle解决游标多维度循环查询效率过低方案

    多维度查询时通常需要建立多个游标循环,查询效率无法得到保障,现在通过游标和substr()函数相结合的方式提高查询效率

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

    ### Oracle中的游标详解 #### 一、引言 在Oracle数据库中,游标是一种非常重要的机制,它允许用户在程序中对查询结果...此外,通过使用循环结构,可以有效地遍历游标中的每一行数据,从而实现复杂的业务逻辑处理。

    ORACLE_DEVELOPER使用指南

    在"ORACLE_DEVELOPER使用指南"中,你可能会学习到以下关键知识点: 1. **SQL Developer**:这是一个强大的SQL查询和开发工具,用于管理Oracle数据库。你可以通过SQL Developer编写、执行SQL语句,查看和分析数据,...

    ORACLE DEVELOPER使用指南

    本指南将深入探讨Oracle Developer的各项功能和使用技巧,帮助你更好地理解和掌握这个强大的开发环境。 1. **Oracle Forms Builder** - **概述**:Forms Builder是Oracle Developer的核心组件,用于创建图形用户...

    Oracle游标使用大全

    ### Oracle游标使用大全 #### 一、概述 在Oracle数据库中,游标是一种重要的机制,用于处理查询结果集中的数据。游标允许程序逐行处理数据,这在需要对多行数据进行循环处理时非常有用。本文档旨在提供一个全面的...

    oracle批量删除数据

    - 使用`WHILE 1 = 1 LOOP`进行无限循环,直到所有满足条件的数据都被删除。 - 通过`EXECUTE IMMEDIATE`动态执行SQL删除语句,每次只删除指定数量的记录(`p_Count`)。 - 利用`ROWNUM`限制每次循环中删除的数据量。...

    Oracle游标使用详解

    根据提供的标题、描述以及部分代码内容,我们可以详细探讨Oracle游标的使用方法,特别是明确游标(Explicit Cursor)和隐式游标(Implicit Cursor)的区别及其具体应用方式。 ### Oracle游标简介 在Oracle数据库中...

Global site tag (gtag.js) - Google Analytics