PL/SQL - 数组
你好,有抱负的程序员们!今天,我们将进入PL/SQL数组的精彩世界。作为你友好邻里的计算机科学老师,我将引导你一步一步地走过这段旅程。如果你是编程新手,不用担心——我们将从基础开始,逐步深入学习。那么,拿起你的虚拟记事本,让我们开始吧!
PL/SQL中的数组是什么?
在我们跳入深水区之前,让我们先了解一下数组是什么。想象你有一堆巧克力,而不是将它们散落在桌子上,你决定把它们放在一个整洁的小盒子里。那个盒子就像是数组——它是一个可以存储相同类型多个项目的容器。
在PL/SQL中,数组是同一数据类型的元素集合。它允许你使用单个变量名存储和操作多个值。相当方便,不是吗?
PL/SQL中的数组类型
PL/SQL提供了三种类型的数组:
- 关联数组(索引表)
- 嵌套表
- 可变大小数组(VARRAYs)
现在,让我们专注于VARRAYs,因为它们是初学者的一个好起点。
创建Varray类型
VARRAY(可变大小数组)是PL/SQL中一种具有最大大小限制的数组类型。这就像是买了一个有固定分隔数的巧克力盒——你不能添加比盒子能容纳的更多的巧克力!
下面是如何创建一个VARRAY类型:
CREATE OR REPLACE TYPE number_array AS VARRAY(5) OF NUMBER;
让我们分解一下:
-
CREATE OR REPLACE TYPE
:这告诉Oracle创建一个新类型或替换一个已存在的类型。 -
number_array
:这是我们给新类型的名称。 -
AS VARRAY(5)
:我们将其定义为一个最大元素数为5的VARRAY。 -
OF NUMBER
:这个数组中的每个元素都将是一个NUMBER数据类型。
现在,让我们看看如何在PL/SQL块中使用这个VARRAY:
DECLARE
my_numbers number_array := number_array(10, 20, 30, 40, 50);
BEGIN
FOR i IN 1..my_numbers.COUNT LOOP
DBMS_OUTPUT.PUT_LINE('元素 ' || i || ': ' || my_numbers(i));
END LOOP;
END;
/
输出:
元素 1: 10
元素 2: 20
元素 3: 30
元素 4: 40
元素 5: 50
让我们剖析这段代码:
- 我们声明
my_numbers
作为我们的VARRAY,并使用5个数字初始化它。 - 我们使用一个FOR循环来遍历数组。
-
my_numbers.COUNT
给我们数组中的元素数量。 - 我们使用
my_numbers(i)
来访问每个元素并打印它。
使用VARRAYs
现在我们已经创建并初始化了一个VARRAY,让我们探索一些我们可以对它进行的操作。
添加元素
记住,我们不能添加超过定义的最大大小的元素。让我们尝试添加一个元素:
DECLARE
my_numbers number_array := number_array(10, 20, 30);
BEGIN
my_numbers.EXTEND;
my_numbers(4) := 40;
FOR i IN 1..my_numbers.COUNT LOOP
DBMS_OUTPUT.PUT_LINE('元素 ' || i || ': ' || my_numbers(i));
END LOOP;
END;
/
输出:
元素 1: 10
元素 2: 20
元素 3: 30
元素 4: 40
在这里,我们使用EXTEND
来增加数组的尺寸1,然后给新元素分配一个值。
移除元素
我们也可以从数组的末尾移除元素:
DECLARE
my_numbers number_array := number_array(10, 20, 30, 40, 50);
BEGIN
my_numbers.TRIM(2); -- 移除最后2个元素
FOR i IN 1..my_numbers.COUNT LOOP
DBMS_OUTPUT.PUT_LINE('元素 ' || i || ': ' || my_numbers(i));
END LOOP;
END;
/
输出:
元素 1: 10
元素 2: 20
元素 3: 30
TRIM
方法从数组的末尾移除元素。
VARRAYs的常见方法
下面是一个你可以使用VARRAYs的常见方法表:
方法 | 描述 |
---|---|
COUNT | 返回数组中的元素数量 |
FIRST | 返回第一个元素的索引 |
LAST | 返回最后一个元素的索引 |
LIMIT | 返回数组的最大大小 |
EXTEND | 增加数组的大小 |
TRIM | 减少数组的大小 |
EXISTS | 检查特定索引处是否存在元素 |
实际示例:学生成绩
让我们用一个实际示例来应用我们的知识。想象你是一名教师(像我一样!),你想存储并计算一个学生的平均成绩:
CREATE OR REPLACE TYPE grade_array AS VARRAY(5) OF NUMBER;
DECLARE
student_grades grade_array := grade_array(85, 90, 78, 92, 88);
total_score NUMBER := 0;
average_score NUMBER;
BEGIN
-- 计算总成绩
FOR i IN 1..student_grades.COUNT LOOP
total_score := total_score + student_grades(i);
END LOOP;
-- 计算平均成绩
average_score := total_score / student_grades.COUNT;
DBMS_OUTPUT.PUT_LINE('平均成绩: ' || ROUND(average_score, 2));
END;
/
输出:
平均成绩: 86.6
这个例子展示了如何使用VARRAY来存储学生的成绩,然后计算并显示他们的平均成绩。
结论
恭喜你!你已经迈出了进入PL/SQL数组世界的第一步。我们已经覆盖了VARRAYs的基础,如何创建和操作它们,甚至将它们用于实际应用。记住,数组就像是巧克力盒——它们使你的数据保持有序且易于访问。在你继续编程旅程的过程中,你会发现数组是你编码工具箱中非常有用的工具。
继续练习,保持好奇心,不要害怕尝试。在你意识到之前,你将用你的PL/SQL技能让每个人都感到惊讶!(抱歉,我忍不住在那里加了一点老师的幽默。)
快乐编码,未来的数据库巫师们!
Credits: Image by storyset