1、使用IS临时存储过程来写冒泡排序
DECLARE
type scorearray IS VARRAY(5) OF INTEGER; // 定义数组
score scorearray; // 数组类型
total INTEGER; // 长度变量
x number; // 交换位置的临时变量
PROCEDURE sort(score in out scorearray) is BEGIN // 创建存储过程
total := score.count; // 获取数组长度
for i in 1 .. total LOOP
for j in (i+1) .. total LOOP
if(score(i) < score(j)) THEN
x := score(i);
score(i) := score(j);
score(j) := x;
END IF;
END LOOP;
END LOOP;
END;
BEGIN
score := scorearray(56,76,45,65,80); // 对数组进行赋值
sort(score); // 调用方法 传入数组
for i in 1 .. score.count LOOP // 遍历打印
dbms_output.put_line(score(i));
END LOOP;
END;
2.使用AS存储过程来写冒泡排序
// 创建数组
CREATE OR REPLACE TYPE arr_num IS VARRAY(5) OF NUMBER
// 创建存储过程
CREATE OR REPLACE PROCEDURE storage(arr IN out arr_num) AS
temp NUMBER; // 用于交换的变量
BEGIN
FOR i IN 1.. arr.count LOOP
FOR j IN (i+1).. arr.count LOOP
IF(arr(i) < arr(j)) THEN
temp := arr(i);
arr(i) := arr(j);
arr(j) := temp;
END IF;
END LOOP;
END LOOP;
END;// 声明方法
DECLARE
nums arr_num; // 定义一个数组类型的变量
BEGINnums := arr_num(54,65,34,76,87); // 对数组赋值
storage(nums); // 调用方法,进行入参
FOR i IN 1.. nums.count LOOP // 循环打印
dbms_output.put_line(nums(i));
END LOOP;
END;