Ошибка «локальные типы коллекций не разрешены» в PL / SQL ORA-06550

Я пытаюсь получить запрос из таблицы Oracle под названием "sys.all_objects" в строковую переменную, поэтому я могу передать ее "dbms_obfuscation_toolkit.DESEncrypt" в качестве ввода, после чего зашифрованная строка войдет в "utl_file", чтобы я мог записать ее в текстовый файл.

Вот проблема, когда я пытаюсь выполнить запрос с помощью этого кода:

DECLARE
TYPE name_array is array(50) OF varchar2(100);
var_input  name_array; 

BEGIN
SELECT owner
  INTO var_input
  FROM sys.all_objects;

  FOR i IN var_input.FIRST .. var_input.LAST
    LOOP
        dbms_output.put_line(var_input(i));
    END LOOP;
END;

и возникает ошибка:

ORA-06550: line 7, column 12:
PLS-00642: local collection types not allowed in SQL statements

есть ли идеи, как решить эту проблему?

для тех, кто хочет увидеть полный код;

CREATE OR REPLACE DIRECTORY data AS 'd:\folder';
GRANT read, write ON DIRECTORY data TO PUBLIC;

DECLARE
var_input  varchar2(64) := 'Rndminpt';
var_key    varchar2(16) := 'Anahtar1'; 
var_enc    varchar2(1024);
var_dec    varchar2(1024);
var_file   utl_file.file_type;

BEGIN

-- (query part)

    dbms_obfuscation_toolkit.DESEncrypt(
        input_string     =>  var_input,
        key_string       =>  var_key,
        encrypted_string =>  var_enc);
    dbms_output.put_line('Encrypted...');

var_file := utl_file.fopen('DATA','textfile.txt','W');            
    utl_file.put_line(var_file,var_enc);
    utl_file.fclose(var_file);        
dbms_output.put_line('Writen in to text... ');      
END;
​​
14
задан Burak Atar 10 December 2011 в 18:22
поделиться