Oracle 10g创建函数——带输入、输出参数

--Oracle10g 开发函数
--1、建立不带参数的函数
create or replace function get_user
return varchar2
is
v_user varchar2(100);
begin
select username into v_user from user_users;
return v_user;
end;


--在sql中利用函数进行查询
select get_user from dual;



--2、建立带有输入参数的函数
create or replace function get_name(id in communitytype.community_type_id%type)
return varchar2
as
v_name communitytype.name%type;
begin
select name into v_name from communitytype com
where com.community_type_id = id;
return v_name;
end;


--使用函数
select get_name('ebook') from dual;



--3、建立带有输出的函数
create or replace function get_name(id in communitytype.community_type_id%type,name out communitytype.name%type)
return varchar2
as
v_eng_name communitytype.english_name%type;
begin
select com.name,com.english_name into name,v_eng_name from communitytype com
where com.community_type_id = id;
return v_eng_name;
end;


--使用函数(因为该函数带有out参数,不能再sql中直接调用,我们选择在command窗口执行函数)
SQL> var name varchar2(50)
SQL> var eng_name varchar2(50)
SQL> exec :eng_name:=get_name('ebook',:name);


--结果显示

    PL/SQL procedure successfully completed
    eng_name
    ---------
    电子图书修改
    name
    ---------
    电子图书



--4、建立同时带有in和out参数的函数
create or replace function result
(num1 number,num2 in out number)
return number
as
v_result number(6);
v_remainder number;
begin
v_result:=num1/num2;
v_remainder:=mod(num1,num2);
num2:=v_remainder;
return v_result;
end;

--使用函数(因为该函数带有out参数,不能再sql中直接调用,我们选择在command窗口执行函数)
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
--5、删除函数
drop function result;


--6、查看函数源代码
select text from user_source where name = 'RESUL';

你可能感兴趣的:(java,oracle,sql)