游标取数据单元,数组的定义,更新中

本文介绍了一个PL/SQL程序实例,演示如何定义并初始化一个整型数组,通过游标从数据库中获取数据填充该数组,并实现对数组元素的排序。此外,还展示了如何输出排序过程中的游标活动次数。

DECLARE
TYPE  InteArrayTyp  IS  TABLE  OF  integer(20) INDEX  BY 

BINARY_INTEGER; 
      v_1 InteArrayTyp;
k INTEGER :=0;
Temp INTEGER := 0;
cursor bb  is  SELECT SNO FROM STUDENT where SNAME = 'ldh';   
BEGIN
open bb;
loop
  fetch bb into v_1(k);
  exit when bb%notfound;
  dbms_output.put_line(v_1(k));
--对数组中的数据进行排序,这个总报找不到数据的错误。
  IF (v_1(k-1)>=v_1(k)) then
  TEMP:= V_1(k-1);
  V_1(k-1):= V_1(k);
  v_1(k):= v_1(k-1);
  k := k+1;
    End If;
end loop;
--输出游标活动的次数
dbms_output.put_line('The times  of cursor to fetch ' || k);
close bb;
end;
/*定一个数组,然后用游标在数据库中取得数据单元,把数据单元赋值

给数组,
然后对数组进行排序,然后再把这个数组更新到原来的单元显示出来
也就是数据库中的排序效果*/

### Java 游标数组的区别 在 Java 中,游标(Cursor)和数组是两种不同的数据结构或访问机制。以下是它们的主要区别: 1. **定义与用途**: - 数组是一种固定大小的数据结构,用于存储相同类型的元素。它通过索引访问元素,索引从 0 开始[^2]。 - 游标通常用于数据库操作中,表示一个查询结果集的指针,允许逐行访问结果集中的数据游标可以看作是一个动态的结果集指针[^4]。 2. **计数方式**: - 在 Java 中,数组的索引是从 0 开始的。例如,`array[0]` 表示数组的第一个元素。 - 游标的计数方式决于具体实现。在某些数据库中,游标可能支持从 1 开始计数的选项,但这并不是 Java 语言本身的特性,而是数据库驱动或 API 的设计选择[^4]。 3. **内存分配**: - 数组在创建时会分配连续的内存空间,所有元素都存储在内存中。因此,数组适合处理较小且已知大小的数据集合。 - 游标通常不会将整个结果集加载到内存中,而是按需从数据库读取数据。这种方式对于处理大量数据非常高效,但需要额外的网络开销。 4. **访问方式**: - 数组支持随机访问,可以通过索引直接访问任意位置的元素。这种访问方式效率高,但在插入或删除元素时性能较差。 - 游标通常以顺序方式访问数据,无法直接跳转到某个特定位置。游标提供了 `next()`、`previous()` 等方法来移动指针位置。 5. **适用场景**: - 数组适用于内存中数据的快速访问和操作,尤其是在数据量较小且固定的情况下。 - 游标适用于处理数据库中的大规模数据集,尤其是当数据不能完全加载到内存中时[^4]。 以下是一个简单的代码示例,展示如何使用数组游标: ```java // 数组示例 int[] array = {1, 2, 3, 4, 5}; System.out.println("数组一个元素: " + array[0]); // 输出 1 // 游标示例(假设使用 JDBC) try (Connection conn = DriverManager.getConnection("jdbc:mysql://localhost/test", "user", "password"); Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery("SELECT id FROM users")) { if (rs.next()) { System.out.println("游标一个元素: " + rs.getInt(1)); // 输出第一个元素 } } catch (SQLException e) { e.printStackTrace(); } ``` ### 注意事项 - 如果需要从 1 开始计数,可以在数组访问时手动调整索引,例如 `array[index - 1]`[^2]。 - 游标的计数方式决于具体的数据库驱动或 API,某些实现可能支持从 1 开始计数的选项。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值