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返回的個數一樣...