过程中的光标

时间:2016-04-28 10:55:04

标签: oracle stored-procedures plsql

我收到代码

的以下错误
  

ORA-06550:第17行,第0列:PLS-00103:遇到符号   "档案结尾"期待以下之一:

declare
    procedure empsindept (dep_no in emp.deptno%type) is
    totalnum number := 0;
begin
    dbms_output.put_line ("The guys in dept are");
    for i in (select * from emp where deptno=dep_no) loop
    dbms_output.put_line(i.ename||"--------"||i.empno);
    totalnum:=totalnum+1;
    end loop;
    dbms_output.put_line("The total guys are : "||totalnum);
end;

请在这里帮助我

谢谢你

1 个答案:

答案 0 :(得分:0)

当您使用declare时,必须按照in the docs所述完成PL / SQL块:

  

PL / SQL是一种块结构语言。 PL / SQL块由关键字DECLAREBEGINEXCEPTIONEND定义,将块分为三个部分:

     
      
  • 声明:声明变量,常量和其他代码元素的语句,然后可以在该块中使用
  •   
  • 可执行文件:执行块时运行的语句
  •   
  • 异常处理:一个特殊结构化的部分,可用于“捕获”或捕获可执行部分运行时引发的任何异常
  •   
     

仅需要可执行部分 。您不必在块中声明任何内容,也不必捕获该块中引发的异常。

所以...你的代码应该是这样的,最后还有一个begin ... end,你也需要执行一些语句,可能会调用你的程序:

declare
    procedure empsindept (dep_no in emp.deptno%type) is
        totalnum number := 0;
    begin
        dbms_output.put_line ('The persons in dept ' || dep_no || ' are');
        for i in (select * from emp where deptno=dep_no) loop
            dbms_output.put_line(i.ename||'--------'||i.empno);
            totalnum:=totalnum+1;
        end loop;
        dbms_output.put_line('The total number of persons is: '||totalnum);
    end;
begin
  -- something should happen here...
end;