“本地收集类型不允许”错误在PL / SQL ORA-06550
发布时间:2020-05-23 10:26:07 所属栏目:MsSql 来源:互联网
导读:我试图从oracle表中获取一个名为“sys.all_objects”的查询 进入一个字符串变量,所以我可以把它作为输入“dbms_obfuscation_toolkit.DESEncrypt”,加密后的字符串将进入“utl_file”,所以我可以把它写入一个txt文件. 这是我的问题,当我尝试查询与此代码; DECL
|
我试图从oracle表中获取一个名为“sys.all_objects”的查询
这是我的问题,当我尝试查询与此代码; 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;
没有检查代码 (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
