arrays - 对 varchar2 数组进行排序 (apex_t_varchar2)

标签 arrays oracle sorting oracle-apex

我必须在 Oracle Apex 应用程序中对穿梭机的输出进行排序。

我想出了这个简单的 pl/sql 来做到这一点,但我想知道是否有更好的方法。或者至少,不必声明两个变量来获得相同的结果。

我的 PL/SQL:

DECLARE
    t       apex_t_varchar2;
    t_tmp   apex_t_varchar2;
BEGIN
    /* shuttle output is d:b:a:c*/
    t := apex_string.split(:MY_SHUTTLE, ':');
    
    FOR i IN (SELECT column_value FROM TABLE ( t ) ORDER BY 1) LOOP 
        apex_string.push(t_tmp, i.column_value);
    END LOOP;

    t := t_tmp;
    dbms_output.put_line(apex_string.join(t, ':'));
END;

输出(正确)是:

a:b:c:d

也许有一种方法可以将 SQL 语句(select ... from table(t))直接转换为 apex_t_varchar2 数组,但我无法做到这样做。

最佳答案

在对数组进行排序时,可以SELECT进入apex_t_varchar2数组。下面的代码是如何执行此操作的示例。

DECLARE
    l_my_shuttle   VARCHAR2 (2000) := 'd:b:a:c';
    t_vals         apex_t_varchar2;
BEGIN
    DBMS_OUTPUT.put_line (l_my_shuttle);

      SELECT *
        BULK COLLECT INTO t_vals
        FROM TABLE (apex_string.split (l_my_shuttle, ':'))
    ORDER BY 1;

    DBMS_OUTPUT.put_line (apex_string.JOIN (t_vals, ':'));
END;
/

输出

d:b:a:c
a:b:c:d

关于arrays - 对 varchar2 数组进行排序 (apex_t_varchar2),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65720366/

相关文章:

c# - 对象数组与对象属性数组——哪个更有效?

php - 计算 get_define_vars 中的变量数量

python - Numpy:给定递增所需的索引,递增数组的元素

algorithm - 在线性时间和就地排序

java - 单击按钮时如何将数组添加到 Jtable java

java - 如何运行 oracle 客户端服务器教程?

c# - pl/sql 查询和 .net 的奇怪行为

sql - Oracle 中的 Case 语句显示所有内容而不是查询项

python - 对具有更高优先级正数的绝对值的整数列表进行排序

c# - 使用字符和数字对 List<> 进行排序