儲存過程學習記錄
學習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...