Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 对varchar2数组排序(apex\u t\u varchar2)_Arrays_Oracle_Sorting_Oracle Apex - Fatal编程技术网

Arrays 对varchar2数组排序(apex\u t\u varchar2)

Arrays 对varchar2数组排序(apex\u t\u varchar2),arrays,oracle,sorting,oracle-apex,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,

我必须在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;

输出(正确)为:


也许有一种方法可以将SQL语句(
select…from table(t)
)直接转换为
apex\t\u varchar2
arrray,但我无法这样做。

在对数组排序时,可以选择apex\t\u varchar2数组中。下面的代码是如何执行此操作的示例

声明
瓦查尔航天飞机(2000):=“d:b:a:c”;
t_vals apex_t_varchar2;
开始
DBMS_OUTPUT.put_line(l_my_shuttle);
挑选*
批量收集到t_vals中
从表(apex_string.split(l_my_shutter,':'))
1号订单;
DBMS_OUTPUT.put_line(apex_string.JOIN(t_vals,,:');
结束;
/
输出
好的,这就是我要找的。我知道我错过了一些东西:我不知道批量收集。那太好了,谢谢你,比
SELECT*。。。从表(…)按1排序
可以使用
列值
伪列并
选择列值。。。从表(…)按列值排序
a:b:c:d
d:b:a:c
a:b:c:d