SQL与对象:现状与未来探索
集合类型处理
在数据库操作中,集合类型的处理是一个重要方面。对于集合中单个成员值的更改,可使用特定语句。FOREACH 循环会将集合中的每个项提取到一个变量中,以便 SPL 例程进行处理,最后用集合变量的内容更新表中的集合列。
以 Oracle 处理可变数组为例,抽象数据类型中数组的各个元素可通过结构化数据类型中的下标引用获取。访问可变数组元素的典型 Oracle PL/SQL 过程如下:
1. 从包含可变数组的表中检索行到一个局部变量,该变量的数据类型需与表的行结构或要检索的特定列相匹配。
2. 执行一个 FOR 循环,使用索引变量 n 从 1 计数到可变数组中的元素数量,元素数量可通过数组列的特殊属性 COUNT 的值获取。
3. 在 FOR 循环内,使用可变数组名称的下标来访问可变数组的第 n 个元素。
对于嵌套表的处理,通常使用 TABLE 函数在 SQL 查询中扁平化表,然后用单个游标驱动的 FOR 循环处理结果。不过,处理过程可能较为复杂,存储过程可能需要检测查询结果中的特定行是否与前一行来自同一个主表行,并在检测到主表行变化时执行特殊处理,如计算小计。这与 30 多年前处理主记录和详细记录的 COBOL 报表编写程序的嵌套循环处理类似。
从这些处理方式可以看出,集合类型和单个集合项的处理更倾向于通过存储过程进行编程访问,而非临时 SQL 使用。这也反映出面向对象数据库受到的一种批评,即它们从关系模型的简单性上有所倒退,重新引入了关系前数据库中显式数据库导航的需求。
用户定义数据类型
对象关系数据管理系统通常允许用户通过自定义数据类型来扩展 DB
超级会员免费看
订阅专栏 解锁全文
2084

被折叠的 条评论
为什么被折叠?



