zoukankan      html  css  js  c++  java
  • PL/SQL通过存储过程为相同数据添加序号

    在Oracle数据库中存有一串数据(Ori_Seq),数据包含不等量重复:

    为方便查看与管理,现希望添加一字段(New_Seq),在原有数据的末尾为其添加一串序号,相同数据序号从小到大排列,序号长度为三位。

    处理结果如下:

    使用存储过程处理,代码如下:

     1 CREATE OR REPLACE PROCEDURE PROC_addseq(prm_AppCode Out NUMBER,
     2                                         prm_ErrMsg  Out Varchar2) IS
     3 
     4   CURSOR Demo IS
     5     select distinct t.ori_seq from demo t order by t.ori_seq; --新建游标Demo
     6 
     7 BEGIN
     8 
     9   prm_AppCode := 0;
    10   prm_ErrMsg  := '';
    11 
    12   BEGIN
    13     FOR c1 IN Demo LOOP
    14       BEGIN
    15       
    16         update demo t
    17            set t.new_seq = t.ori_seq || '-' ||
    18                            substr(cast(1000 + rownum as char(4)), 2, 3)
    19          where t.ori_seq = c1.ori_seq;
    20         --更新new_seq数据
    21         /*
    22         *number类型不能使用0开头
    23         *增加一位数字作为开头
    24         *使用cast将number转换为char类型
    25         *再截取后三位作为添加序列
    26         */
    27       
    28         dbms_output.put_line(c1.ori_seq || ' has been finished');
    29         --输出更新进度
    30         commit;
    31         --提交
    32       
    33       EXCEPTION
    34         WHEN OTHERS THEN
    35           prm_AppCode := -1;
    36           prm_ErrMsg  := 'Error! ' || SQLERRM;
    37           RETURN;
    38           --输出错误提示
    39       
    40       END;
    41     END LOOP;
    42   END;
    43 END PROC_Addseq;

    执行后可见更新进度:

    排序查看结果如下:

  • 相关阅读:
    Nginx负载均衡+代理+ssl+压力测试
    Nginx配置文件详解
    HDU ACM 1690 Bus System (SPFA)
    HDU ACM 1224 Free DIY Tour (SPFA)
    HDU ACM 1869 六度分离(Floyd)
    HDU ACM 2066 一个人的旅行
    HDU ACM 3790 最短路径问题
    HDU ACM 1879 继续畅通工程
    HDU ACM 1856 More is better(并查集)
    HDU ACM 1325 / POJ 1308 Is It A Tree?
  • 原文地址:https://www.cnblogs.com/Abs-Zero/p/add_sequences_to_string_in_PLSQL.html
Copyright © 2011-2022 走看看