暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 索引-by表/关联数组

askTom 2016-08-12
369

问题描述

您可以将PL/SQL集合 (如按索引表/关联数组) 加入到常规表吗?如果不是,那么在两个集合中匹配数据的好技术是什么?

Thanx,


专家解答

不是11分,而是12分。

v11

SQL> create or replace
  2  package pkg is
  3    type t is table of number index by pls_integer;
  4    procedure p;
  5  end;
  6  /

Package created.

SQL>
SQL> create or replace
  2  package body pkg is
  3
  4  procedure p is
  5    r t;
  6  begin
  7    r(1) := 10;
  8    r(2) := 20;
  9
 10    for i in ( select * from table(r)
 11              )
 12    loop
 13      null;
 14    end loop;
 15  end;
 16
 17  end;
 18  /

Warning: Package Body created with compilation errors.

SQL>
SQL>
SQL> sho err
Errors for PACKAGE BODY PKG:

LINE/COL ERROR
-------- -----------------------------------------------------------------
9/14     PL/SQL: SQL Statement ignored
9/28     PL/SQL: ORA-22905: cannot access rows from a non-nested table
         item

9/34     PLS-00382: expression is of wrong type


v12

SQL> create or replace
  2  package pkg is
  3    type t is table of number index by pls_integer;
  4    procedure p;
  5  end;
  6  /

Package created.

SQL>
SQL> create or replace
  2  package body pkg is
  3
  4  procedure p is
  5    r t;
  6  begin
  7    r(1) := 10;
  8    r(2) := 20;
  9
 10    for i in ( select * from table(r)
 11              )
 12    loop
 13      null;
 14    end loop;
 15  end;
 16
 17  end;
 18  /

Package body created.


在v11中,您需要将数据传输到嵌套表类型或全局临时表。

希望这有所帮助。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论