oracle 資料庫儲存過程編寫

2021-10-25 03:14:34 字數 1763 閱讀 1575

儲存過程學習記錄

學習blog

-- 建立或替換儲存過程(無參) proc_attribution_wskh

create

orreplace

procedure proc_attribution_wskh

as-- 定義變數,接收儲存資料

v_user_id varchar2(14)

; v_mobile_tel varchar2(16)

; v_province_name varchar2(32)

; v_province_code varchar2(14)

; v_city_name varchar2(64)

; v_city_code varchar2(14)

; total integer :=0;

-- 定義游標

cursor cur_attribution_wskh

is-- 把查詢的結果儲存到游標中

select user_id,mobile_tel from charles.userqueryextinfo t where t.request_status notin(

'8',

'9')

;begin

open cur_attribution_wskh;

loop

-- 抓取游標中每一次迴圈的值到變數中

fetch cur_attribution_wskh into v_user_id,v_mobile_tel;

-- 游標中的資料抓取完,迴圈結束

exit

-- %notfound 有結果時是false

when cur_attribution_wskh%notfound;

begin

select

count(*

)into total from charles.mobilelocation m where substr(v_mobile_tel,1,

7)= m.mobile_tel;

if total =

0then

-- 輸出執行中的資料

dbms_output.put_line(

'total!'

|| v_user_id ||

'為零!');

continue

;endif;

-- 如果有資料 則執行insert into ...... select ......

insert

into charles.mobilelocationext (user_id,mobile_tel,province_name,province_code,city_name,city_code)

select v_user_id,v_mobile_tel,province_name, province_code, city_name, city_code from charles.mobilelocation where substr(v_mobile_tel,1,

7)= mobile_tel;

end;

endloop

;-- 關閉游標

close cur_attribution_wskh;

-- 提交插入記錄

commit

;-- 異常處理 異常則回滾

exception

when others then

rollback

;end

;

Oracle資料庫儲存過程

建立語句 create or replace procedure 儲存過程名 儲存過程名定義 包括儲存過程名和引數列表。引數名和引數型別。引數名不能重複,引數傳遞方式 in,out,in out in 表示輸入引數,按值傳遞方式。out 表示輸出引數,可以理解為按引用傳遞方式。可以作為儲存過程的輸出...

oracle資料庫 儲存過程

儲存過程 stored procedure 是一組為了完成特定功能的sql 語句集,經編譯後儲存在資料庫中。使用者通過指定儲存過程的名字並給出引數 如果該儲存過程帶有引數 來執行它。儲存過程是資料庫中的乙個重要物件,任何乙個設計良好的資料庫應用程式都應該用到儲存過程。儲存過程是由流控制和sql 語句...

資料庫儲存過程編寫和呼叫

儲存過程優點 執行速度更快,允許模組化程式設計,提高系統安全性,防止sql注入,減少網路流通量。系統儲存過程一般以 或 組成 create proc 儲存過程名 定義變數 引數,可以不用寫declare as begin end通常資料庫的儲存過程裡一邊都要加事務。事務 原子性,一致性,隔離性 be...