Sql 在oracle TABLE-VARRAY中插入自定义记录
我想手动将自定义Sql 在oracle TABLE-VARRAY中插入自定义记录,sql,oracle,plsql,Sql,Oracle,Plsql,我想手动将自定义BLOB文件插入本地表变量。我想像使用VARRAY一样使用它,但我使用的是表类型,因为我不知道最大文件数 这是我的软件包的代码: CREATE OR REPLACE PACKAGE my_pkg AS TYPE rec_headers IS RECORD ( file1 BLOB := EMPTY_BLOB(), file2 BLOB := EMPTY_BLOB() ); TYPE tab_headers I
BLOB
文件插入本地表变量。我想像使用VARRAY
一样使用它,但我使用的是表
类型,因为我不知道最大文件数
这是我的软件包的代码:
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\u headers
属于RECORD
类型,所以我尝试将其更改为OBJECT
,但随后它抱怨包内不支持该类型
我无法在包外创建对象
类型,因为我没有特权(而且我不会获得特权)
仍然有一种方法可以通过使用变量来实现它?您应该能够直接引用记录的字段,而不是尝试使用构造函数
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).file1 := p_my_file1;
p_headers(1).file2 := p_my_file2;
END;
/