日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

子程序和程序包-2

發布時間:2024/10/12 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 子程序和程序包-2 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

/*
注意:當建立函數時在函數頭部必須要帶有return子句,在函數體內至少要包含一個return子句。

*/
1.不帶任何參數的函數


--案例01:新建不帶參數的函數
create or replace function getuser
return varchar2
is
v_user varchar2(10);
begin
select username into v_user from user_users;
return v_user;
end;

--調用函數的方法1:
declare
v1 varchar2(10);
begin
v1:=getuser;
dbms_output.put_line('getuser函數的結果為:' ||' ' ||v1);
end;

--調用函數的方法2:
select getuser from dual;


----調用函數的方法3:
set serveroutput on
exec dbms_output.put_line('getuser函數的結果為:' ||getuser);

?

2.帶有輸入參數的函數

--案例02:新建帶IN參數的函數
create or replace function getname(sno varchar2)
return varchar2? /*返回類型后面是不能使用精度值的,只是表示返回的數據類型*/
is?
name varchar2(12);
begin
select ename into name from emp where empno=sno;
return name;
exception
when too_many_rows then
dbms_output.put_line('返回值的行數太多!');
when others then
dbms_output.put_line('執行getname函數出現以外錯誤!');
end;

--調用函數的方法1:

declare
?nm varchar(12);
begin
nm:=getname('7369');
dbms_output.put_line('輸出的值是:'||nm);
end;


--調用函數的方法2:
?select getname(7788) from dual;


--調用函數的方法3:

set serveroutput on
exec dbms_output.put_line('getname函數的結果為:' ||getname(7788));

?

3.帶有out參數的函數

create or replace function get_info
(
name varchar2,
title out varchar2
)
return varchar2
as
deptname dept.dname%type;
begin
select a.job, b.dname into title, deptname from emp a, dept b
where a.deptno=b.deptno and upper(a.ename)=upper(name);
return deptname;
exception
when no_data_found then
raise_application_error(-20000, '這個員工不能存在!');
end;


--調用函數
/*

這里需要申明兩個變量,一個用來接受out參數的結果;一個用來接受函數返回的結果。
*/

declare
job varchar2(20);
dname varchar2(20);? --用來接受函數的結果
begin
dname:=get_info('scott',job);
dbms_output.put_line('getinfo is : ' ||dname ||' ;' ||job );
end;

?


4.帶有 IN OUT參數的函數

create or replace function in_out_fun
(
num01 number,
num02 in out number
)
return number
as
v_result number;
v_remain number;
begin
v_result:=num01/num02;
v_remain:=mod(num01,num02);
num02:=v_remain;
return v_result;
exception
when zero_divide then
raise_application_error(-20000, '不能排除0');
end;


--調用函數
declare
n02 number;
fun_result number;
begin
n02:=30;
fun_result:=in_out_fun(100, n02);
dbms_output.put_line(n02 ||';'||'?? '||fun_result);
end;

?

/*
sql中調用函數的限制:
1.在sql語句中只能調用存儲函數不能調用客戶端的函數
2.在sql語句中只能調用帶有輸入參數的函數不能調用out和in out的函數
3.sql中調用的函數不能在insert、update、delete中調用
*/


?

轉載于:https://www.cnblogs.com/javatec03/archive/2012/03/16/2404853.html

總結

以上是生活随笔為你收集整理的子程序和程序包-2的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。