Arrays 对varchar2数组排序(apex\u t\u varchar2)
我必须在Oracle Apex应用程序中对穿梭机的输出进行排序 我提出了这个简单的pl/sql来实现这一点,但我想知道是否有更好的方式来实现它。或者至少,不必声明两个变量来获得相同的结果 我的PL/SQL: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,
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