create or replace function get_user return varchar2 is
v_user varchar2(100);
begin
select ename into v_user from emp where deptno = 8;
return v_user;
end get_user;
SQL> var v1 varchar2(100);
SQL> exec :v1 := get_user;
PL/SQL procedure successfully completed
v1
---------
王八
create or replace function get_user return varchar2 is
v_user varchar2(100);
begin
select ename into v_user from emp where deptno = 8;
return v_user;
end get_user;
create or replace function get_info(name varchar2, no out varchar2) return number is
v_salary number;
begin
select salary,empno into v_salary,no from emp where ename = name;
return v_salary;
exception when no_data_found then
raise_application_error(-20000,'该雇员不存在');
end get_info;
SQL> var sal number;
SQL> var empno varchar2;
SQL> exec :sal := get_info('钱二',:empno);
PL/SQL procedure successfully completed
sal
---------
1800
empno
---------
2
create or replace function result(num1 number, num2 in out number) return number is
v_result number(6);
v_remainder number;
begin
v_result := num1/num2;
v_remainder := mod(num1,num2);
num2 := v_remainder;
return v_result;
exception when ZERO_DIVIDE then
raise_application_error(-20000,'不能除0');
end result;
SQL> var result1 number;
SQL> var result2 number;
SQL> exec :result2 := 30;
PL/SQL procedure successfully completed
result2
---------
30
SQL> exec :result1 := result(100,:result2);
PL/SQL procedure successfully completed
result1
---------
3
result2
---------
10