Oracle(八)儲存過程

2021-09-19 04:36:20 字數 2961 閱讀 9773

pl/sql有以下3種儲存過程:

建立過程

create [ or replace ] procedure 過程名

[ (引數列表…) ] is | as

[ 區域性變數宣告 ]

begin

《過程體》

end [ 過程名 ];

引數宣告的格式 :

引數名 [in | out | in out] 資料型別 [ := 初始值 ]
in引數型別表示此引數接受過程外傳遞來的值;

out引數型別表示此引數將在過程中被賦值,並傳遞到過程體外;

in out引數型別表示此引數同時具備in和out引數型的特性。

示例:

create or replace procedure userman.resetpwd

( v_userid in number)

asbegin

update userman.users set userpwd = '111111'

where userid = v_userid;

end;

執行:

execute userman.resetpwd (1);
刪除過程 :

drop procedure [方案名.]過程名
建立函式:

函式必須有返回值

create [ or replace ] function 函式名 

[ (引數列表) ]

return 函式資料型別 is | as

[ 區域性變數宣告 ]

begin

過程體return 函式值

end [ 函式名 ];

示例:

create function userman.getpwd

( v_name in users.username%type )

return users.userpwd%type

asoutpwd users.userpwd%type;

begin

select userpwd into outpwd from users

where username=''||v_name||'';

return outpwd;

end;

呼叫函式 :

[方案名.]過程名

varpwd:= userman.getpwd('admin');

刪除函式

drop function userman.getpwd;
pl/sql程式包是由包規範部分和包體組成的。可以使用create package語句來建立包的說明部分,它的基本語法結構如下:

create [ or replace ] package 程式包名 

is | as

[ 宣告部分 ]

end [ 程式包名 ];

宣告部分可以包括型別、變數、過程、函式和游標的說明。

create or replace package userman.mypack

isprocedure resetpwd

( v_userid in number);

function getpwd

( v_name in userman.users.username%type )

return userman.users.userpwd%type;

end mypack;

程式包體:

create package body 程式包名

is | as

[ 宣告部分 ]

[ 過程體 ]

[ 函式體 ]

[ 初始化部分 ]

end [ 程式包名 ];

示例:

create package body userman.mypack

isprocedure resetpwd

( v_userid in number)

asbegin

update userman.users set userpwd = '111111' where userid = v_userid;

end;

function getpwd

( v_name in userman.users.username%type )

return userman.users.userpwd%type

asoutpwd userman.users.userpwd%type;

begin

select userpwd into outpwd from userman.users

where username=''||v_name||'';

return outpwd;

end;

end mypack;

呼叫程式包 :

呼叫程式包中的過程:方案名.程式包名.過程名

呼叫程式包中的函式:方案名.程式包名.函式名

刪除

刪除程式包體:drop package body 方案名.程式包名;

刪除程式包:drop package 方案名.程式包名;

Oracle基礎(八) 儲存過程

儲存過程是在大型資料庫中,事先經過編譯並儲存在資料庫中的一段sql語句的集合。如果有update操作,要在儲存過程外commit。儲存過程和儲存函式的區別 儲存過程可以通過輸出引數返回多個值,儲存函式只能返回乙個值 create or replace procedure 儲存過程名 引數 引數的格式...

oracle筆記八(函式 儲存過程 包)

函式 過程和函式的唯一區別是函式總向呼叫者返回資料,而過程則不返回資料 1.建立函式 create or replace function get salary v deptno number,emp count out number return number 這裡的type只能是型別,不能有長度...

Oracle儲存過程呼叫儲存過程

oracle儲存過程呼叫有返回結果集的儲存過程一般用光標的方式,宣告乙個游標,把結果集放到游標裡面,然後迴圈游標 declare newcs sys refcursor cs1 number cs2 number cstype table rowtype table列的個數和newcs返回的個數一樣...