首页 > 解决方案 > 如何处理 Oracle PL/SQL 中的 into 错误问题?

问题描述

这是我的代码

begin
    open vcursor;
    loop
        fetch vcursor into v1, v2, v3, v4;
        exit when vcursor%notfound;
        dbms_output.PUT_LINE('hello');
        insert into tblproject
        select seq_tblproject.nextval, t5.SUBJECTNAME || 'project', T3.SUBJECTEND, t1.TEAMSEQ
        into v1, v2, v3, v4
        from tblteam t1
                 inner join TBLCLASS t2 on t1.CLASSSEQ = t2.CLASSSEQ
                 inner join TBLOPENCOURSE T on T.OPENCOURSESEQ = t2.OPENCOURSESEQ
                 inner join TBLOPENSUBJECT T3 on T.OPENCOURSESEQ = T3.OPENCOURSESEQ
                 inner join TBLAVAILABLESUBJECT T4 on T4.AVAILABLESUBJECTSEQ = T3.AVAILABLESUBJECTSEQ
                 inner join TBLSUBJECT T5 on T5.SUBJECTSEQ = t4.SUBJECTSEQ
        where (v1, v2) in (
            select distinct t5.SUBJECTSEQ, t1.TEAMNAME
            from tblteam t1
                     inner join TBLCLASS t2 on t1.CLASSSEQ = t2.CLASSSEQ
                     inner join TBLOPENCOURSE T on T.OPENCOURSESEQ = t2.OPENCOURSESEQ
                     inner join TBLOPENSUBJECT T3 on T.OPENCOURSESEQ = T3.OPENCOURSESEQ
                     inner join TBLAVAILABLESUBJECT T4 on T4.AVAILABLESUBJECTSEQ = T3.AVAILABLESUBJECTSEQ
                     inner join TBLSUBJECT T5 on T5.SUBJECTSEQ = t4.SUBJECTSEQ);
--         dbms_output.PUT_LINE(a || ',' || b|| ',' ||c|| ',' ||d);

        dbms_output.PUT_LINE(v1);
        dbms_output.PUT_LINE(v2);
        dbms_output.PUT_LINE(v3);
        dbms_output.PUT_LINE(v4);
    end loop;
end;

我想用 dbms 输出进​​行调试。

[65000][6550] 
ORA-06550: line 23, column 9: 
PL/SQL: ORA-01744: 
inappropriate INTO ORA-06550: line 21, column 9: 
PL/SQL: SQL Statement ignored

出现这样的错误。

已确认将 4 个值放入 insert into 与其他代码一起正常工作。但这令人沮丧,因为它现在在此代码中不起作用。

我应该如何解决这个问题?Oracle 版本是 11.g。

此致

此致

标签: sqloracle

解决方案


您有一个SELECT INTO语句和 inINSERT语句混淆了,这导致了这个错误。开头的声明

insert into tblproject

并在这里结束

  inner join TBLSUBJECT T5 on T5.SUBJECTSEQ = t4.SUBJECTSEQ);

是插入语句。删除线into v1, v2, v3, v4,它会工作。您不能SELECT INTO在插入语句的中间执行 a 。因此错误ORA-01744: inappropriate INTO


推荐阅读