在oracle TABLE-VARRAY中插入自定义记录

时间:2015-10-26 19:04:18

标签: sql oracle plsql

我想手动将自定义BLOB文件插入到本地表变量中。我想像VARRAY一样使用它,但我使用的是TABLE类型,因为我不知道最大文件数。

这是我的包裹的代码:

CREATE OR REPLACE PACKAGE my_pkg AS
    TYPE rec_headers IS RECORD
    (
        file1   BLOB := EMPTY_BLOB(),
        file2   BLOB := EMPTY_BLOB()
    );
    TYPE tab_headers IS TABLE OF rec_headers;
END my_pkg;

这是我的PL \ SQL块:

DECLARE
    p_headers my_pkg.tab_headers;

    p_my_file1  BLOB := EMPTY_BLOB();
    p_my_file2  BLOB := EMPTY_BLOB();
BEGIN
    p_headers := my_pkg.tab_headers();

    /* Process that fills p_my_file1 and p_my_file2 */

    p_headers.EXTEND;

    p_headers(1) := my_pkg.rec_headers(p_my_file1, p_my_file2);
END;
/

我收到以下错误

PLS-00222: no function with name 'REC_HEADERS' exists in this scope

我假设是因为rec_headers属于RECORD类型,所以我尝试将其更改为OBJECT,但后来却抱怨包内不支持。

我无法在包外创建OBJECT类型,因为我没有权限(我不会得到它们)。

还有一种方法可以使用变量实现它吗?

1 个答案:

答案 0 :(得分:2)

您应该能够直接引用记录的字段,而不是尝试使用构造函数。

DoubleEndedIterator