Plsql PL SQL临时表

Plsql PL SQL临时表,plsql,oracle-apex,plsql-psp,Plsql,Oracle Apex,Plsql Psp,我需要在PL SQL中创建一个键值对 我知道Oracle没有SQL Server那样的临时表概念,但它可以帮助我将拆分的字符串转换为哈希、数组或类似的格式来处理它。我的问题是,每次尝试使用关联数组(按表索引)时,都会出现以下错误: PLS-00103:在预期以下情况之一时遇到符号“REPORTTABTYP”:=。(@%; 这是我的关联数组的声明: create or replace procedure "POST_TX" (p_report IN VARCHAR2) is begin T

我需要在PL SQL中创建一个键值对

我知道Oracle没有SQL Server那样的临时表概念,但它可以帮助我将拆分的字符串转换为哈希、数组或类似的格式来处理它。我的问题是,每次尝试使用关联数组(按表索引)时,都会出现以下错误:

PLS-00103:在预期以下情况之一时遇到符号“REPORTTABTYP”:=。(@%;

这是我的关联数组的声明:

create or replace procedure "POST_TX"
(p_report IN VARCHAR2)
is
begin
    TYPE ReportTabTyp IS TABLE OF NUMBER INDEX BY VARCHAR2(64);
    ReportTab ReportTabTyp := ReportTabTyp();
类似地,我尝试在过程中使用EXECUTE立即创建一个临时表,但由于它不存在,过程无法编译

以下是我的全部程序:

create or replace procedure "POST_TX"
(p_report IN VARCHAR2)
is
begin
    TYPE ReportTabTyp IS TABLE OF NUMBER INDEX BY VARCHAR2(64);
    ReportTab ReportTabTyp := ReportTabTyp();

FOR loop_words IN
        (select level as ID, regexp_substr(p_report,'[^ ]+', 1, level) as report
        from dual
        connect by regexp_substr(p_report, '[^ ]+', 1, level) is not null)
    LOOP
        ReportTab(loop_words.ID) := loop_words.report;
    END LOOP loop_words;

    IF (LENGTH(TRIM(TRANSLATE(ReportTabTyp(2).report, ' +-.0123456789', ' '))) IS NULL) THEN
        -- Do stuff
    ELSE
        -- Output error
    END IF;
end;

您的类型和变量应该在
开始之前声明。您似乎还交换了数据类型

create or replace procedure "POST_TX"
(p_report IN VARCHAR2)
is
    TYPE ReportTabTyp IS TABLE OF VARCHAR2(64) INDEX BY NUMBER;
    ReportTab ReportTabTyp := ReportTabTyp();
begin
...

您的类型和变量应该在
开始之前声明。您似乎还交换了数据类型

create or replace procedure "POST_TX"
(p_report IN VARCHAR2)
is
    TYPE ReportTabTyp IS TABLE OF VARCHAR2(64) INDEX BY NUMBER;
    ReportTab ReportTabTyp := ReportTabTyp();
begin
...

您可以在oracle中创建全局临时表并在会话中使用-

您可以在oracle中创建全局临时表并在会话中使用-

不确定您的目标是哪种处理,但您可能对apex\u string package感兴趣不确定您的目标是哪种处理,但您也可能感兴趣感谢apex_字符串包中的ted!结果是这样的:is TYPE ReportTabTyp是VARCHAR2(128)的表,按二进制_整数索引;ReportTab ReportTabTyp;beginThanks!结果是这样的:is TYPE ReportTabTyp是VARCHAR2(128)的表按二进制整数值索引;ReportTab ReportTabTyp;begin