ORACLE 儲存過程

2021-08-14 04:27:16 字數 2426 閱讀 5602

儲存過程詳解

一,概念:儲存過程是一組預編譯的sql語句,常和游標、索引和檢視等一起使用,功能強大但實際工作中使用不多。

二,優缺點:

1.儲存過程預編譯,執行速度較快。將**邏輯存放在資料庫中,便於**移植,減少網路流量

2.需要專門的資料庫人員維護,現實中一般由開發人員維護且不能適應頻繁的需求變動,所以儲存過程一般在專案後期,用在資料統計一類大資料流量演算法邏輯要求比較高的環境

三,基礎知識:

基本結構:begin   end

屬性:a dept.dname%type

賦值:(:=)

獲取鍵盤:(&)

查詢:select *** into 變數列表 from 表名;

判斷*2:if 條件 then 語句;elsif 條件 then 語句 else  case  變數 when 值  then

迴圈*3:loop  語句  exit when  條件 endloop while 條件 loop語句 end loopfor 臨時變數 in 起始值 結束值 loop語句;end loop;

呼叫:execute immediate sql 語句字串

into 變數列表;

using 引數列表;

異常:exctption when 異常型別 then 處理語句 when others then

四,語法:

create [or replace] procedure

過程名(引數列表)

is|as

宣告部分

begin

執行語句

exception

異常處理

end儲存過程引數

in:用於接收呼叫程式的值,預設的引數模式

out:用於向呼叫程式返回值。

in out:既又

四,幾個例項:

4.1基礎查詢(帶條件):

注釋:sqlserver中 引數用@表示如 @username char(20)

createor replace procedure p1 (

id in number(20), 

str in varchar(20) 

)no integer :=0;

name string; is

begin

select t_id,t_name into no,name from t1 where id=id and str=str

exception

when no_data_found then -- catches all 』no data found』 errors

end

4.2 判斷

4.2.1 if else判斷

create or replace procedure p2( a in number(20)) is

begin

if a <5 then 

dbms_output.put_line('小於5');--控制台輸出

elseif a < 10 then ...

else ...

end if;

end;

4.2.2 case判斷

create or replace procedure p3( a in number(20)) is

begin

case a

when 1 then ...

when 2 then ...

when 3 then ...

else ...

end case;

end4.3迴圈

4.3.1do while

create or replace procedure p4 is

a integer;

begin

a:=0;

loop

...a:=a+1;

exit when a>10;

end loop;

end;

4.3.2 while

create or replace procedure p5 is

a integer;

begin

a:=0;

while a<300 loop

...a:=a+1;

end loop;

end;

4.3.3 for in (遍歷游標,資源來自shawn)

create or replace procedure p6  is

cursor csr_dept is select name from dept;

row_dept csr_dept%rowtype

begin

for row_dept in csr_dept loop

dbms_output.put_line(row_dept.name);

end loop;

end;

Oracle儲存過程呼叫儲存過程

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

ORACLE儲存過程

自定義函式開始 create or replace function fn wftemplateidget templatecategoryid number,organid number,templatemode number return number istemplateid number i...

Oracle 儲存過程

create or replace procedure p 有就替換,沒有就建立 iscursor c is select from emp for update begin for v emp in c loop if v emp.deptno 10 then update emp2 set sa...