Arrays 如何在PL/SQL中创建10个数字的数组并按升序排序

Arrays 如何在PL/SQL中创建10个数字的数组并按升序排序,arrays,plsql,Arrays,Plsql,我尝试合并两个数组,因此值是相关的。我想我已经得到了下面那部分的代码——但它不起作用。在这之后,我想把它们也按升序排列。我是PL/SQL新手,因此欢迎提供任何指导。谢谢 CREATE type sarray is varray(10) of varchar2(10); type sno is varray(10) of char(2); names sarray; serialno sno; newtable sarray; BEGIN names:= sarray

我尝试合并两个数组,因此值是相关的。我想我已经得到了下面那部分的代码——但它不起作用。在这之后,我想把它们也按升序排列。我是PL/SQL新手,因此欢迎提供任何指导。谢谢

CREATE
type sarray is varray(10) of varchar2(10);
type sno is varray(10) of char(2);

names sarray;
serialno sno;
newtable sarray;

BEGIN

 names:= sarray            (Smith','Diaz', 'Manny', 'Ike','Cruise','Roberts','Fuller','Calabrese' ,'Sharp     e','Khanna');
serialno:= sno('2','4','5','6','9','1','3','7','8', '10');

newtable:= serialno MULTISET UNION names;

FOR i in serialno.first..serialno.last

LOOP
DBMS_output.put_line (i || '. ' || serialno(i));
END LOOP;
END;
/

我不确定我是否理解这个问题。你说的“结合”是什么意思?相关?怎么用?您应该提供输入以及所需的输出

同时,看看这段代码。它使用预定义的集合(属于SYS,一个用于字符串-
ODCIVarchar2List
,另一个用于数字,
ODCINumberList
)。我将一些值放在那里,并按原样显示它们(无排序),然后使用
TABLE
函数进行排序

SQL> declare
  2    names    sys.odcivarchar2list;
  3    serialno sys.odcinumberlist;
  4  begin
  5    names    := sys.odcivarchar2list('Smith', 'Diaz', 'Manny');
  6    serialno := sys.odcinumberlist(3, 1, 2);
  7
  8    dbms_output.put_line('--> display SERIALNO/NAMES "as is"');
  9    for i in serialno.first..serialno.last loop
 10      dbms_output.put_line(i ||'. '|| serialno(i) ||', '|| names(i));
 11    end loop;
 12
 13    dbms_output.put_line('--> display NAMES alphabetically');
 14    for cur_r in (select column_value from table(names) order by column_value)
 15    loop
 16      dbms_output.put_line(cur_r.column_value);
 17    end loop;
 18  end;
 19  /
--> display SERIALNO/NAMES "as is"
1. 3, Smith
2. 1, Diaz
3. 2, Manny
--> display NAMES alphabetically
Diaz
Manny
Smith

PL/SQL procedure successfully completed.

SQL>

如果您对某些代码有问题,请将其粘贴到您的问题中,以便我们提供帮助!将上述
名称的赋值替换为
名称:=sarray('Smith','Diaz','Manny','Ike','Cruise','Roberts','Fuller','Calabrese','Sharp e','Khanna')
Smith'
之前需要报价。谢谢!我希望得到这个结果,但是按照序列号的顺序,比如1。迪亚兹2,曼尼3。史密斯等。我现在知道如何从您的代码中选择序列号列并对其进行排序。我也可以倒序吗?所以显示为3.Smith,2.Manny 1.Diaz等?那么,需要的输出是什么?需要的输出是-->序列号升序1.Diaz 2.Manny 3.Smith和-->序列号降序3.Smith 2.Manny 1.Diaz。这就是输出显示的(升序),不是吗?下面是“->按字母顺序显示名称”注释。如果你想按降序排列,请按列排序。是的,这正是我想要的。非常感谢!