oracle plsql例子

polestar123發表於2009-03-19

在scott/tiger下測試

1、建立function

首先設定SQL> set serveroutput on;

create or replace function fgetEmp(depid in number, ret out varchar2)
return varchar2 is
type rec is table of emp%rowtype index by binary_integer;
emprec rec;
cursor cur1 is
select * from emp where deptno = depid;
j number := 1;
my_exception exception;
begin
ret := 'error';
open cur1; --下面的loop需要顯示的open close 遊標
loop
fetch cur1
into emprec(j);
exit when cur1%NOTFOUND;
if cur1%NOTFOUND then
raise my_exception;
end if;
dbms_output.put_line('fetch--' || emprec(j).empno || '--' || emprec(j)
.ename || '--' || emprec(j).deptno);
j := j + 1;
end loop;
close cur1;
for i in cur1 loop
--不需要顯示的open close 遊標
dbms_output.put_line(i.empno || '--' || i.ename || '--' || i.deptno);
end loop;
ret := 'success';
return ret;
exception
when my_exception then
dbms_output.put_line('no data');
return ret;
when others then
dbms_output.put_line('others error : sqlcode=' || sqlcode ||
' ;sqlerror:' || sqlerrm);
return ret;
end;

2、測試function

create or replace procedure test(dep number) as

ret varchar2(100) := 'ret';
begin

ret := fgetemp(dep, ret);
dbms_output.put_line(ret);
end;

[@more@]

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70612/viewspace-1019033/,如需轉載,請註明出處,否則將追究法律責任。

相關文章