gpt4 book ai didi

sql - "local collection types not allowed"PL/SQL 错误 ORA-06550

转载 作者:行者123 更新时间:2023-12-03 21:24:25 26 4
gpt4 key购买 nike

我正在尝试从名为“sys.all_objects”的 oracle 表中获取查询
进入一个字符串变量,然后我可以将它作为输入提供给“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;

最佳答案

这只是对 A.B.Cade 的回答的澄清。光标与问题无关。

根本原因

PLS-00642: local collection types not allowed in SQL statements

sql into只能与 PL/SQL 变量或记录一起使用,但不能与 PL/SQL 集合一起使用。

对于 PL/SQL 集合,必须使用 select bulk collect into反而。

(是的 - 我同意错误消息可能更具描述性。)

也可以看看:
  • SELECT INTO Statement

  • 示例

    以下匿名块使用 PLS-00642 编译,因为 select into不能与集合一起使用:
    declare
    type dual_list_t is table of dual%rowtype;
    v_duals dual_list_t;
    begin
    select *
    into v_duals
    from dual
    connect by level <= 2
    ;
    end;
    /

    以下匿名块编译良好:
    declare
    type dual_list_t is table of dual%rowtype;
    v_duals dual_list_t;
    begin
    select *
    bulk collect into v_duals
    from dual
    connect by level <= 2
    ;
    end;
    /

    关于sql - "local collection types not allowed"PL/SQL 错误 ORA-06550,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8458806/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com