【问题标题】:Oracle Associative arrays, how to define?Oracle 关联数组,如何定义?
【发布时间】:2020-11-25 00:36:32
【问题描述】:

我正在尝试在 Oracle 中创建一个关联数组,当我创建一个嵌套表时,它工作正常:

CREATE OR REPLACE TYPE TRNG_BOOK_AUTHORS_TAB 
AS TABLE OF VARCHAR2(500);

但是当我添加索引时出现错误:

CREATE OR REPLACE TYPE TRNG_BOOK_AUTHORS_TAB 
AS TABLE OF VARCHAR2(500) INDEX BY PLS_INTEGER;
  • 错误:PL/SQL:编译单元分析终止
  • 错误(2,4):PLS-00355:在此上下文中不允许使用 pl/sql 表

我有什么问题?

【问题讨论】:

    标签: oracle oracle-sqldeveloper associative-array


    【解决方案1】:

    您正在创建一个模式类型;它们可以是嵌套表或可变数组(varray),但不能是关联数组。

    来自the create type statement 的文档:

    您使用 CREATE TYPE 语句创建的独立集合类型不同于您在 PL/SQL 块或包中使用关键字 TYPE 定义的集合类型。有关后者的信息,请参阅"Collection Variable Declaration"

    使用CREATE TYPE 语句,您可以创建嵌套表和VARRAY 类型,但不能创建关联数组。在 PL/SQL 块或包中,您可以定义所有三种集合类型。

    【讨论】:

    • Alex,谢谢你的启发。我没有意识到它们必须是包装的一部分。那是我缺少的链接,我现在可以使用了,谢谢。
    猜你喜欢
    • 1970-01-01
    • 2011-02-24
    • 2013-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-02
    • 1970-01-01
    相关资源
    最近更新 更多