【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

得到结果:

【Oracle】使用PL/SQL实现冒泡排序的更多相关文章

  1. Oracle中PL/SQL的执行部分和各种流程控制

    Oracle中PL/SQL的执行部分和异常部分 一.PL/SQL的执行部分. 赋值语句. 赋值语句分两种,一种是定义一个变量,然后接收用户的IO赋值:另一种是通过SQL查询结果赋值. 用户赋值举例: ...

  2. Oracle中PL/SQL简介、基本语法以及数据类型

    Oracle中PL/SQL简介.基本语法以及数据类型 一.PL/SQL简介. Oracle PL/SQL语言(Procedural Language/SQL)是结合了结构化查询和Oracle自身过程控 ...

  3. 使用oracle 的 PL/Sql 定时执行一个存储过程

    CSDN日报20170322--<关于软件研发的一些体会总结> 同步博客至 CSDN ,让更多开发者看到你的文章 看微博技术大咖解析互联网应用架构实战 使用oracle 的 PL/Sql ...

  4. Oracle之PL/SQL学习笔记

    自己在学习Oracle是做的笔记及实验代码记录,内容挺全的,也挺详细,发篇博文分享给需要的朋友,共有1w多字的学习笔记吧.是以前做的,一直在压箱底,今天拿出来整理了一下,给大家分享,有不足之处还望大家 ...

  5. 【SQL】Oracle的PL/SQL语法及其拓展数据类型总结

    PL/SQL语法 PL/SQL程序由三部分组成,声明部分.执行部分.异常处理部分. 模板: DECLARE /*变量声明*/ BEGIN /*程序主体*/ EXCEPTION /*异常处理部分*/ E ...

  6. Oracle实践--PL/SQL表分区的基础

    PL/SQL基础入门之表分区 PL/SQL:过程语言(Procedure  Language)和结构化语言(Structured Query Language)结合而成的编程语言.是对SQL的扩展.支 ...

  7. C#(在WeBAPI)获取Oracle(在PL/SQL)游标类型的存储过程(用到了RefCursor)

    需求:WebAPI服务端,通过Oracle数据库的存储过程,获取数据. 在PL/SQL 建立存储过程:(先来最简单的,就是把整个表都查出来) create or replace procedure S ...

  8. 【Oracle】PL/SQL 显式游标、隐式游标、动态游标

    在PL/SQL块中执行SELECT.INSERT.DELETE和UPDATE语句时,Oracle会在内存中为其分配上下文区(Context Area),即缓冲区.游标是指向该区的一个指针,或是命名一个 ...

  9. Oracle数据库PL/SQL那点事情---修改过电脑的用户名

    在安装Oracle数据库的PL/SQL工具时候,电脑名称是重装系统后自动生成的用户名名称,作为程序员,有很强的强迫症,就想利用自己的英文名称作为自己电脑的名称,所以就修改了电脑的名称:结果PL/SQL ...

  10. ORACLE FORMS PL/SQL PACKAGE SHOW TIPS WINDOW

    --在开发ORACLE FORM的程序中,要编写PL/SQL程序包产出异常情况时,直接在FORM弹出一个异常提示窗口 DECLARE BEGIN app_exception.raise_excepti ...

随机推荐

  1. 华为 A800-9000 服务器 离线安装MindX DL 可视化环境+监控

    MindX DL Sample主要应用于企业的数据中心或超算中心机房中,针对不同的应用场景为客户提供AI深度学习端到端解决方案. 传统行业:用户无自建深度学习平台,希望能够提供简单易用.软硬件一体化的 ...

  2. [Windows/Linux]Linux下的正斜杠"/"和"\"的区别 [转载]

    执行某一条Linux命令时,遇到了此问题,甚为不解.[文由] 本篇属于全文转载自: Linux下的正斜杠"/"和""的区别 - 博客园 >>> ...

  3. ChatGPT4实现前一天

    目录 提出需求 代码实现 需求分析 单元测试 等价类划分 决策表 软件测试作业,用ChatGPT4来帮个小忙,小划水,勿喷勿喷,近期有相关作业的同学看到我的文章,建议修改一下,别撞车了,哈哈哈~ 提出 ...

  4. Go语言实现协程下载器

    一般常用的下载方式是通过浏览器访问URL,然后基于HTTP进行下载.这种单线程下载方式通常比较慢,这里尝试使用Go语言实现一个多协程的下载器. 大致思路 按照传统的单线程的思路,实现下载要基于HTTP ...

  5. 当我第一次通过Kotlin和Compose来实现一个Canvas时, 我收获了什么?

    当我第一次通过Kotlin和Compose来实现一个Canvas时, 我收获了什么? 自从2019年Google推荐Kotlin为Android开发的首选语言以来已经经历了将近四年的时间, Compo ...

  6. 搭建SpringBoot项目依赖和配置快速篇

    maven依赖及一些配置 这里主要是搭建项目常用到的maven依赖以及搭建项目会需要用到的一些配置文件,可能下面这些依赖还不是很全,但是应该会满足日常大部分的需求了 Spring Spring项目的依 ...

  7. python库Munch的使用记录

    开头 日常操作字典发现发现并不是很便利,特别是需要用很多 get('xxx','-') 的使用,就觉得很烦,偶然看到Kuls大佬公众号发布的一篇技术文有对 python munch库的使用, 使得字典 ...

  8. 2023-05-01:给你一个整数 n , 请你在无限的整数序列 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, ...] 中找出并返回第 n 位上的数字。 1 <= n <=

    2023-05-01:给你一个整数 n , 请你在无限的整数序列 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, ...] 中找出并返回第 n 位上的数字. 1 <= n ...

  9. 2022-03-30:有m个同样的苹果,认为苹果之间无差别, 有n个同样的盘子,认为盘子之间也无差别, 还有,比如5个苹果如果放进3个盘子, 那么1、3、1和1、1、3和3、1、1的放置方法,也认为是

    2022-03-30:有m个同样的苹果,认为苹果之间无差别, 有n个同样的盘子,认为盘子之间也无差别, 还有,比如5个苹果如果放进3个盘子, 那么1.3.1和1.1.3和3.1.1的放置方法,也认为是 ...

  10. 2021-07-10:请返回arr中,求子数组的累加和,是<=K的并且是最大的。返回这个最大的累加和。

    2021-07-10:请返回arr中,求子数组的累加和,是<=K的并且是最大的.返回这个最大的累加和. 福大大 答案2021-07-10: 时间紧.见代码. 时间复杂度:O(N*logN).空间 ...