Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在PL/SQL中对数字表进行排序?

如何在PL/SQL中对数字表进行排序?
EN

Stack Overflow用户
提问于 2019-06-11 04:15:29
回答 3查看 2.3K关注 0票数 2

我希望使用plsql中的集合按升序显示数字。

我有如下代码。它将以未排序的顺序显示数字,但我希望按排序顺序显示它们。

代码语言:javascript
运行
AI代码解释
复制
DECLARE
    TYPE num_asc IS
        TABLE OF NUMBER;
    rec_num   num_asc;
    v_var     NUMBER;
BEGIN
    rec_num := num_asc(10,21,13,14,52,16);
    FOR i IN rec_num.first..rec_num.last LOOP
        dbms_output.put_line (rec_num (i));
    END LOOP;
END;

所需成绩: 10 13 14 16 21 52

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-06-11 05:34:27

使用SQL。这当然是最少的代码,也可能是最有效的方法。只需将集合类型更改为我们可以在table()函数中使用的内容:

代码语言:javascript
运行
AI代码解释
复制
DECLARE
    rec_num  sys.odcinumberlist;
BEGIN
    rec_num := sys.odcinumberlist(10,21,13,14,52,16);
    for i in (select * from table(rec_num) order by 1)
    loop
        dbms_output.put_line(i.column_value);
    end loop;
END;
票数 4
EN

Stack Overflow用户

发布于 2019-06-11 04:30:02

要对集合进行排序,需要在架构级别上定义类型。

代码语言:javascript
运行
AI代码解释
复制
CREATE TYPE num_asc IS TABLE OF NUMBER;

您可以在带有ORDER BY子句的select语句中使用它。

代码语言:javascript
运行
AI代码解释
复制
DECLARE
    rec_num   num_asc;
    v_var     NUMBER;
BEGIN
    rec_num := num_asc(10, 21, 13, 14, 52, 16);

    --Sorting rec_num
    SELECT CAST (MULTISET (
        SELECT *
          FROM TABLE (rec_num)
         ORDER BY 1
    ) AS num_asc)
      INTO rec_num
      FROM dual;
    FOR i IN rec_num.first..rec_num.last LOOP
        dbms_output.put_line (rec_num (i));
    END LOOP;
END;

这要归功于卢卡斯·杰勒马,他发表了几篇关于这一主题的文章。

票数 3
EN

Stack Overflow用户

发布于 2019-06-11 04:37:16

由于您使用的是PL/SQL集合,所以只需编写一个小过程来对它们进行排序:

代码语言:javascript
运行
AI代码解释
复制
DECLARE
  TYPE num_asc IS TABLE OF NUMBER; 

  rec_num  num_asc;
  v_var    number;

  PROCEDURE sort_numbers(pioNumbers IN OUT num_asc) IS
    bSwapped  BOOLEAN := FALSE;
    bRepeat   BOOLEAN := TRUE;
    nTemp     NUMBER;
  BEGIN
    WHILE bRepeat LOOP
      FOR i IN 1..pioNumbers.COUNT-1 LOOP
        IF pioNumbers(i+1) < pioNumbers(i) THEN
          nTemp := pioNumbers(i);
          pioNumbers(i) := pioNumbers(i+1);
          pioNumbers(i+1) := nTemp;
          bSwapped := TRUE;
        END IF;
      END LOOP;  -- i

      bRepeat := bSwapped;
      bSwapped := FALSE;
    END LOOP;  -- bRepeat
  END sort_numbers;

  PROCEDURE print_numbers(pinMsg     IN VARCHAR2,
                          pinNumbers IN num_asc) IS
  BEGIN
    DBMS_OUTPUT.PUT_LINE(pinMsg);

    for i in pinNumbers.first .. pinNumbers.last loop
      dbms_output.put_line(pinNumbers(i));
    end loop;
  END print_numbers;
BEGIN
  rec_num := num_asc(10,21,13,14,52,16);

  print_numbers('Before sort', rec_num);

  sort_numbers(rec_num);

  print_numbers('After sort', rec_num);
END;

它产生以下输出:

代码语言:javascript
运行
AI代码解释
复制
Before sort
10
21
13
14
52
16
After sort
10
13
14
16
21
52

祝你好运。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56543514

复制
相关文章
什么是泛型以及在集合中泛型的使用[通俗易懂]
泛型最常与集合使用,因为泛型最开始开始被加入Java就是为了解决集合向下转型一类问题的。如果我们有这样一个需求:定义一个描述类圆,要求圆中的数据类型是不确定的,也就是声名属性的时候,属性类型是不确定的。比如描述类圆中有半径,要求半径可以用int,也可以用double。那么此时数据类型不确定,就使用泛型,把数据类型参数化。
全栈程序员站长
2022/06/25
2.6K0
加法变乘法
本文最后更新于 1163 天前,其中的信息可能已经有所发展或是发生改变。 #include<iostream> #include<cstring> using namespace std; int main(){ int arr[49]; for(int i=0;i<49;i++){ arr[i]=i+1; } int arr1[48]; memset(arr1,0,sizeof(arr1)); for(int i=0;i<46;i++){ arr1[i]=1; for(int j=
Yuyy
2022/06/28
9270
泛型在Java中的应用
在对该类进行实例化时,需要将泛型指定为具体的包装类,此时,在实例化泛型类时,就可以起到编译时检查的作用。
头发还在
2023/10/16
4020
Dart中的泛型方法、泛型类、泛型接口
为了能在一个方法里实现传入什么数据类型就返回什么数据类型,可以利用泛型将方法写成下面这样:
越陌度阡
2020/12/10
4.7K0
Dart中的泛型方法、泛型类、泛型接口
XYG3型泛函在ORCA中的使用
本篇文章中我们讨论XYG3型泛函在ORCA中的使用方法。关于XYG3型泛函的介绍可见上期链接。
用户7592569
2022/03/31
1.7K0
List集合中泛型使用细节
我们可以看到 需要的是Object 传的是一个String 这种情况我们使用时候是需要注意的 但是有一种情况是可以的
暴躁的程序猿
2022/03/23
1.1K0
List集合中泛型使用细节
矩阵乘法
#include <stdio.h> #include <stdlib.h> #include <math.h> #define LEN 3
WindCoder
2018/09/20
9630
[每日一题]矩阵乘法
本次的题目来源于C语言网比赛栏目八月月赛第一题,记得去试试看看自己能不能AC哦!!! 题目描述 给定一个N阶矩阵A,输出A的M次幂(M是非负整数) 例如: A = 1 2 3 4 A的2次幂 7 10 15 22 输入 第一行是一个正整数N、M(1< =N< =30, 0< =M< =5),表示矩阵A的阶数和要求的幂数 接下来N行,每行N个绝对值不超过10的非负整数,描述矩阵A的值 输出 输出共N行,每行N个整数,表示A的M次幂所对应的矩阵。相邻的数之间用一个空格隔开
编程范 源代码公司
2018/04/18
1.4K0
TypeScript中泛型及泛型函数、泛型类、泛型接口,泛型约束,一文读懂
 最近在学TypeScript,然后整理了一下关于TypeScript中泛型的一些笔记。
痴心阿文
2022/11/21
3.6K0
详解Python中的算术乘法、数组乘法与矩阵乘法
(2)列表、元组、字符串这几种类型的对象与整数之间的乘法,表示对列表、元组或字符串进行重复,返回新列表、元组、字符串。
Python小屋屋主
2021/05/11
10K0
详解Python中的算术乘法、数组乘法与矩阵乘法
什么是泛型,怎么使用泛型分析
泛型就是广泛的类型,也是一种数据类型,而这种数据类型可以是任意类型,编写过程中当中不能确定类型,创建对象时必须指定具体类型,不指定也可以,但是会出现一些错误。
全栈程序员站长
2022/06/28
1.7K0
什么是泛型,怎么使用泛型分析
Java 泛型使用
泛型是Java中一项十分重要的特性,在Java 5版本被引入,在日常的编程过程中,有很多依赖泛型的场景,尤其是在集合容器类的使用过程中,更是离不开泛型的影子。
zhipingChen
2018/12/24
8950
08:矩阵加法
08:矩阵加法 总时间限制: 1000ms 内存限制: 65536kB描述 输入两个n行m列的矩阵A和B,输出它们的和A+B。 输入第一行包含两个整数n和m,表示矩阵的行数和列数。1 <= n <= 100,1 <= m <= 100。 接下来n行,每行m个整数,表示矩阵A的元素。 接下来n行,每行m个整数,表示矩阵B的元素。 相邻两个整数之间用单个空格隔开,每个元素均在1~1000之间。输出n行,每行m个整数,表示矩阵加法的结果。相邻两个整数之间用单个空格隔开。样例输入 3 3 1 2 3 1 2
attack
2018/04/03
1.7K0
C#泛型入门泛型类、泛型集合、泛型方法、泛型约束、泛型委托
给.neter们整理了一份《.NET/C#面试手册》,目前大约4万字左右,初衷也很简单,就是希望在面试的时候能够帮助到大家,减轻大家的负担和节省时间。对于没有跳槽打算的也可以复习一下相关知识点,就当是查缺补漏!
全栈程序员站长
2022/09/14
3.1K0
C#泛型入门泛型类、泛型集合、泛型方法、泛型约束、泛型委托
Java中泛型的介绍和使用
我们都知道Java里的集合(list,map....)是可以存放任意对象的,只要把对象存储集合后,那么这时他们都会被提升成Object类型。当我们在取出每一个对象,并且进行相应的操作,这时必须采用类型转换。看下面这段示例代码
框架师
2019/12/02
1K0
全面解读!Golang中泛型的使用
导语 | Golang在2022-03-15发布了V1.18正式版,里面包含了对泛型的支持,那么最新版本的泛型如何使用呢?有哪些坑呢?本文全面且详细的带你了解泛型在Golang中的使用。 一、什么是泛型 说起泛型这个词,可能有些人比较陌生,特别是PHP或者JavaScript这类弱语言的开发者,尤其陌生。因为在这些弱语言中,语法本身就是支持不同类型的变量调用的。可以说无形之中早已把泛型融入语言的DNA中了,以至于开发者习以为常了。 举个PHP中的泛型的例子: 我们定义了一个sum函数,参数是传入2个变量,返
腾讯云开发者
2022/06/24
8.8K2
全面解读!Golang中泛型的使用
Java中泛型的详细解析,深入分析泛型的使用方式
可以发现,在编译过后,程序会采取去泛型化措施.也就是说,Java中的泛型,只在编译阶段有效.在编译过程中,正确检验泛型结果后,会将泛型的相关信息擦除,并且在对象进入和离开方法的边界处添加类型检查和类型转换方法
攻城狮Chova
2022/01/22
1.3K0
【Java 泛型】泛型用法 ( 泛型类用法 | 泛型方法用法 | 泛型通配符 ? | 泛型安全检查 )
泛型类用法 : 使用时先声明泛型 , 如果不声明泛型 , 则表示该类的泛型是 Object 类型 ;
韩曙亮
2023/03/29
10.8K0
【Java 泛型】泛型用法 ( 泛型类用法 | 泛型方法用法 | 泛型通配符 ? | 泛型安全检查 )
【Java 泛型】泛型简介 ( 泛型类 | 泛型方法 | 静态方法的泛型 | 泛型类与泛型方法完整示例 )
泛型 可以 简单理解为 参数化类型 , 主要作用在 类 , 方法 , 接口 上 ;
韩曙亮
2023/03/29
19.3K0
【Java 泛型】泛型简介 ( 泛型类 | 泛型方法 | 静态方法的泛型 | 泛型类与泛型方法完整示例 )
Java进阶:【泛型】认识泛型,泛型方法,泛型类,泛型接口和通配符
例如关于这个元素如何保存,如何管理等是确定的,因此此时把元素的类型设计成一个参数,这个类型参数叫做泛型。
冷环渊
2021/11/29
4.1K0
Java进阶:【泛型】认识泛型,泛型方法,泛型类,泛型接口和通配符

相似问题

使用泛型进行矩阵乘法

10

numpy中的矩阵加法/乘法

10

在SYCL中实现矩阵加法和乘法

10

使用泛型乘法集合

12

如何在scala中使用泛型数字类型进行加法和乘法?

13
交个朋友
加入腾讯云官网粉丝站
蹲全网底价单品 享第一手活动信息
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档