将值插入至内层的集合

在 SPL 例程中,您还可将值插入至嵌套的集合的内层集合。通常,要访问嵌套的集合的内层集合并将值插入到它,请执行下列步骤:
  1. 声明集合变量来在表的一行中保存整个集合。
  2. 声明元素变量来保存该外层的集合的一个元素。元素变量本身是集合变量。
  3. 将整个集合从表的一行选择至集合变量。
  4. 声明游标,以便您可在外层的集合的元素间移动。
  5. 一次将一个元素选择至元素变量内。
  6. 请使用分支或循环来定位您想要更新的内层集合。
  7. 将新值插入至内层的集合内。
  8. 关闭游标。
  9. 以新的集合更新数据库表。
作为示例,您可在 numberstwin_primes 列上使用此过程。 例如,假设 twin_primes 包含下图所示的值,且您想要将值 18 插入至 LIST 的最后的 SET 中。

图: twin_primes 列表。

LIST( SET( {3,5}, {5,7}, {11,13}, {17,19} ) )
下图展示插入该值的过程的开始。

图: 插入值的过程。

CREATE PROCEDURE add_int()
          
          DEFINE list_var LIST( SET( INTEGER NOT NULL ) NOT NULL );
          DEFINE set_var SET( INTEGER NOT NULL );
          
          SELECT twin_primes INTO list_var FROM numbers
          WHERE id = 100;

至此,attaint 过程已执行了步骤 123。第一个 DEFINE 语句声明保存在一个数值行中的整个集合的集合变量。

第二个 DEFINE 语句声明保存该集合的元素的元素变量。在此情况下,元素变量本身是集合变量,因为它保存 SET。SELECT 语句将整个集合从一行选择至集合变量 list_var 内。

下图展示如何声明游标,以便于您可在外层的集合的元素间移动。

图: 声明游标来在外层的集合的元素间移动。

FOREACH list_cursor FOR
            SELECT * INTO set_var FROM TABLE( list_var);
            
            FOREACH element_cursor FOR