Arrays 如何在PL/SQL中创建10个数字的数组并按升序排序
我尝试合并两个数组,因此值是相关的。我想我已经得到了下面那部分的代码——但它不起作用。在这之后,我想把它们也按升序排列。我是PL/SQL新手,因此欢迎提供任何指导。谢谢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
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。这就是输出显示的(升序),不是吗?下面是“->按字母顺序显示名称”注释。如果你想按降序排列,请按列排序。是的,这正是我想要的。非常感谢!