“本地收集类型不允许”错误在PL / SQL ORA-06550
发布时间:2020-12-12 08:44:05 所属栏目:MsSql教程 来源:网络整理
导读:我试图从oracle表中获取一个名为“sys.all_objects”的查询 进入一个字符串变量,所以我可以把它作为输入“dbms_obfuscation_toolkit.DESEncrypt”,加密后的字符串将进入“utl_file”,所以我可以把它写入一个txt文件. 这是我的问题,当我尝试查询与此代码; DECL
我试图从oracle表中获取一个名为“sys.all_objects”的查询
进入一个字符串变量,所以我可以把它作为输入“dbms_obfuscation_toolkit.DESEncrypt”,加密后的字符串将进入“utl_file”,所以我可以把它写入一个txt文件. 这是我的问题,当我尝试查询与此代码; 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; 解决方法尝试使用光标和BULK COLLECT代替:http://www.dba-oracle.com/t_oracle_bulk_collect.htm 应该看起来像这样: DECLARE TYPE name_array is array(50) OF varchar2(100); var_input name_array; cursor c1 is SELECT owner FROM sys.all_objects; BEGIN open c1; fetch c1 bulk collect into var_input; close c1; FOR i IN var_input.FIRST .. var_input.LAST LOOP dbms_output.put_line(var_input(i)); END LOOP; END; 没有检查代码 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |