1. 程式人生 > 實用技巧 >Oracle儲存過程筆記

Oracle儲存過程筆記

Oracle之儲存過程

儲存過程定義,變數宣告,獲取數值,輸出方法

declare 
--給一個變數申明和賦值
v_age 型別 := 值;
--這個變數被稱為引用變數型別,就是說這個變數的型別和表中的型別相同,一般推薦這種使用方法
v_name [表名].[欄位名]%Type;

--相當於java方法
begin
--給v_name 賦值,這裡根據自己的表去改
select person_name into v_name from [表名] where person_id = '000820';

--輸出語句, || 是拼接的意思
dbms_output.put_line('姓名: ' || v_name || ' 年齡: ' || v_age);
end;

記錄型變數(不推薦使用)

declare 
--記錄型變數宣告
v_row [表名]%rowtype;

begin
--要查出一整條記錄,所以用*
select * into v_row from [表名] where person_id = '000820';

--輸出時,當成物件去.屬性名
dbms_output.put_line(v_row.person_id || v_row.person_name);
end;

if分支

declare
v_depId [表名].[欄位名]%type;

begin
select depart_id into v_depId from [表名] where person_id = '000820';

--分支開始
if v_depId = '41' then
dems_output.put_line('部門是收費室');
--一定要注意這個elsIf,沒有e,不是else
elsIf v_depId = '48' then
dems_output.put_line('部門是神經疾病科');
end if;
end;

迴圈

declare
v_cnt integer := 0;

begin
--迴圈開始
loop
--退出迴圈條件,我想列印0-30嘛
exit when v_cont > 30
--輸出
dems_output.put_line(v_cnt);
--變數更新
v_cnt := v_cnt + 1;
--迴圈結束
end loop;

end;

遊標

declare
--定義名稱,編號變數
v_name, v_id
--建立遊標
cursor c_row is select [欄位名],[欄位名]... from [表名];

begin
--開啟遊標
open c_row;
loop
--取出數值
fetch c_row into v_name, v_id;
--退出條件
exit when c_row%notfound;
dems_output.put_line(v_name || ' ' || v_id);
end loop;
--關閉遊標
close c_row;
end;