Oracle儲存過程筆記
阿新 • • 發佈:2020-09-06
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;