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;

    执行后可见更新进度:

    排序查看结果如下:

  • 相关阅读:
    mysql用户
    mysql字符集
    tidb之一致性算法raft学习
    更新港资股票数据
    php中的时区设置
    PHP 中的注释
    python下如何处理windows的路径名
    安装第三方模块
    偏函数
    装饰器没学明白,记录一下,以后再学
  • 原文地址:https://www.cnblogs.com/Abs-Zero/p/add_sequences_to_string_in_PLSQL.html
Copyright © 2011-2022 走看看