ITPub博客

首页 > Linux操作系统 > Linux操作系统 > pl/sql函数过程结构

pl/sql函数过程结构

原创 Linux操作系统 作者:hekexi316 时间:2008-05-19 21:23:26 0 删除 编辑
今天第一次搞PL/sql函数,以前也看过很多相关介绍,但是一直没有实践
用的开发工具是 oracle 的 sql developer,不太熟悉
犯了错误,花费了时间,当然也学到了一些知识la
第一个使用游标的过程也即函数总算成功啦
实践如下

在开发工具的左边视图的PROCEDURE右键新规
生成如下代码

CREATE OR REPLACE
PROCEDURE PROCEDURE2 AS
BEGIN
  NULL;
END PROCEDURE2;

使用hr schema

将代码修改成如下

CREATE OR REPLACE
PROCEDURE PROCEDURE2 AS
declare
cursor emp_cursor is select EMPLOYEE_ID,salary from EMPLOYEES;
emp_record emp_cursor%rowtype;
begin
  open emp_cursor;
    loop
      fetch emp_cursor into emp_record;
      exit when emp_cursor%NOTFOUND;
      if emp_record.salary>2000 then
        dbms_output.PUT_LINE(emp_record.EMPLOYEE_ID);
      end if;
    end loop;
  close emp_cursor; 
END PROCEDURE2;

此时编译,总是出现以下错误,好不容易才解决了

Error(4,1): PLS-00103: 記号"DECLARE"が見つかりました。 次のうちの1つが入るとき:     begin function package pragma procedure subtype type use    form    current cursor external language 記号"begin" は続行のために"DECLARE"に代わりました。

Error(18): PLS-00103: 記号"end-of-file"が見つかりました。 次のうちの1つが入るとき:     begin case declare end exception exit for goto if loop mod    null pragma raise return select update while with   
    << close current delete fetch lock insert    open rollback savepoint set sql execute commit forall merge    pipe

将代码修改如下形式即可
CREATE OR REPLACE
PROCEDURE PROCEDURE1 AS
begin
declare
cursor emp_cursor is select EMPLOYEE_ID,salary from EMPLOYEES;
emp_record emp_cursor%rowtype;
begin
  open emp_cursor;
    loop
      fetch emp_cursor into emp_record;
      exit when emp_cursor%NOTFOUND;
      if emp_record.salary>2000 then
        dbms_output.PUT_LINE(emp_record.EMPLOYEE_ID);
      end if;
    end loop;
  close emp_cursor; 
end;

END PROCEDURE1;

比较两者,我才知道pl/sq过程的完整结构



来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/13895577/viewspace-277840/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: debug权限
请登录后发表评论 登录
全部评论

注册时间:2008-05-02

  • 博文量
    38
  • 访问量
    57871