数据库函数练习1

来源:互联网 发布:曼哈顿 房价 知乎 编辑:程序博客网 时间:2024/06/05 10:54

test表数据如下:

ikey      cname   pikey

1           集团      0

2           公司      1

3           部门      2

4           个人      3

试写一递归函数,传入ikey值,遍历取出pikey值。运行时如传入ikey为4,则该函数遍历取出pikey值依次为3、2、1、0,最后返回0显示到前台。

--创建表drop table test;drop sequence seq_test;create sequence seq_test;create table test( ikey number(5) primary key, cname varchar2(10), pikey number(3));insert into test values(seq_test.nextval,'集团',0);insert into test values(seq_test.nextval,'公司',1);insert into test values(seq_test.nextval,'部门',2);insert into test values(seq_test.nextval,'个人',3);commit;select * from test;--函数create or replace function func_test(i_int in number)return numberis  result number(3);  temp number(3);  type ref_cursor is ref cursor;  v_cursor ref_cursor;begin  open v_cursor for 'select pikey from test where ikey<= '||i_int||'order by ikey desc';  loop    fetch v_cursor into temp;    exit when v_cursor%notfound;    dbms_output.put_line(temp);    if(temp=0) then      result:=temp;      goto label1;    end if;  end loop;  <<label1>>  close v_cursor;  return result;  exception    when others then       if(v_cursor%isopen) then        close v_cursor;                          end if;      return '';end;--测试declare  v_pikey number;begin  v_pikey :=func_test(4);  dbms_output.put_line('结果值:'||v_pikey);end;



0 0
原创粉丝点击