最新要闻

广告

手机

光庭信息跌4.57% 2021上市超募11亿2022扣非降74% 时快讯

光庭信息跌4.57% 2021上市超募11亿2022扣非降74% 时快讯

搜狐汽车全球快讯 | 大众汽车最新专利曝光:仪表支持拆卸 可用手机、平板替代-环球关注

搜狐汽车全球快讯 | 大众汽车最新专利曝光:仪表支持拆卸 可用手机、平板替代-环球关注

家电

天天看热讯:【Oracle】使用PL/SQL实现冒泡排序

来源:博客园


(资料图片)

【Oracle】使用PL/SQL实现冒泡排序

一般来说,SQL要排序的话直接使用order by即可

不一般来说,就是瞎搞,正好也可以巩固自己的数据结构基础

存储包内容如下

规范:

create or replace package data_structure_pkg is  PROCEDURE get_data(p_data varchar2);end data_structure_pkg;

体:

create or replace package body data_structure_pkg is  --------------------以下为冒泡排序部分----------------------  --定义一个存储数据的临时表  TYPE numtable IS TABLE OF LONG INDEX BY BINARY_INTEGER;  --主方法  PROCEDURE get_data(p_data varchar2) IS    v_data numtable;    n      number := 1;    p_num  number;  begin    --以;作为分隔符,将数字进行分离    FOR sub_data IN (select tt.data as sdata                       from (select regexp_substr(p_data, "[^;]+", 1, level) data                               from tablet bd                             connect by level <=                                        regexp_count(p_data, ";") + 1) tt                      where rownum <= regexp_count(p_data, ";") + 1) LOOP      --放入临时表                      v_data(n) := sub_data.sdata;      --打印出来原顺序的数据      dbms_output.put_line("排序前第" || n || "位:" || v_data(n) || "|");      --递增      n := n + 1;    end loop;    dbms_output.put_line("-------------------------------------");    --排序    for i in reverse 1 .. v_data.count loop      --依次提取i次下标位数字      for j in reverse (i + 1) .. v_data.count loop        --比较        if v_data(i) > v_data(j) then          p_num := to_number(v_data(i));          v_data(i) := v_data(j);          v_data(j) := p_num;        end if;      end loop;    end loop;    --打印出来排序以后的数据    for i in 1 .. v_data.count loop      dbms_output.put_line("排序后第" || i || "位:" || v_data(i) || "|");    end loop;    end get_data;end data_structure_pkg;

输入字符串2;1;3;4;6;5;7;8;9

得到结果:

关键词: