Oracle Forms - 错误103,遇到符号“END”

时间:2015-06-17 06:41:08

标签: oracle plsql oracleforms

我正在使用Oracle Forms Builder 11 我的代码:

declare 
    type myType is varray(3000) of my_table%rowtype;
    myAsset myType:=myType();
    i number;
    n number;
    exNoInvNum exception;   
begin   
    go_block('my_block');
    first_record;
    i:=1;
    loop
        myAsset.extend();
        myAsset(i).hqId:=:my_block.hqId;
        myAsset(i).deptId:=:my_block.deptId;
        myAsset(i).invNum:=:my_block.invNum;        
        exit when :system.last_record='TRUE';
        i:=i+1;
        next_record;
    end loop;
    go_block('my_block');
    first_record;
    loop        
        if (:my_block.linkedInvNum is not null) then
            n:=0;
            select count(*) into n
                from my_table s
                where s.invNum=:my_block.linkedInvNum
                and s.hqId=:my_block.hqId
                and (s.deptId=:my_block.deptId
                or (s.deptId is null and :my_block.deptId is null));
            if (n=0) then
                for i in myAsset.first .. myAsset.last loop
                    if (myAsset(i).invNum=:my_block.linkedInvNum
                    and myAsset(i).hqId=:my_block.hqId
                    and (myAsset(i).deptId=:my_block.deptId
                    or (myAsset(i).deptId is null and :my_block.deptId is null))) then
                        n:=1;
                    end if;
                end loop;
            end if; 
            if (n=0) then
                raise exNoInvNum;
            else
                commit_form;    
                go_block('my_table');
                clear_block(no_validate);               set_item_property('my_block.generate_excel',ENABLED,property_true);             set_item_property('my_block.process_data',ENABLED,property_false);
            end if;
        end if;
        exit when :system.last_record='TRUE';   
        next_record;
    end loop;
    exception
        when exNoInvNum then
            message('No existing inventory number!');
        when others then
            null;
    end;
end;

我得错误103广告第2行第1列:遇到符号“END”

我检查了我的代码是否有拼写错误,缺少半字节和类似内容,但看起来一切都很好。

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

  

我收到错误103广告第2行,第1列:遇到符号"结束"

嗯,PL / SQL块中还有一个额外的 END 关键字。

    end;
end;

匿名 PL / SQL块的语法是:

DECLARE
   ...
BEGIN
   ...
EXCEPTION
   ...
END;

而且,这个:

when others then
   null;

本身就是您代码中的错误。

当其他人几乎总是 BUG ,除非后面紧跟 RAISE 。请记住,对于错误,RAISE –> CATCH –> HANDLE。为什么我们需要一个异常处理程序?要捕获错误,请记录它们(可选),最后对它们做一些事情。

阅读WHEN OTHERS THEN NULL – A bug