在網路上很少人在寫一些關於DB 的程式設計,這讓我在學習上很不方便,因此來寫這個學習筆記統整一下DB程式設計的技術,然而一般在學習程式我們會把最基礎的常數宣告、 if /else、, 判斷式、迴圈、異常處理學的滾瓜爛熟才開始學習進階的應用, 因此這邊我們 Day 2 來練習PL/SQL 的基礎內功。
範例 1 – Hello World
- DBMS_OUTPUT.put_line : 可將內容輸出在 DBMS 輸出視窗中,方便Bebug 用
- BEGIN : 程式開始撰寫前需要宣告的值 (不需要分號)
- END: 程式結束位置( 記得要分號結尾)
BEGIN
DBMS_OUTPUT.put_line('hello world');
END;
範例 2 – PL/SQL 變數宣告
- DECLARE : 如果要宣告變數需要在這個區塊內進行宣告如: 常數、指標。
- number : 這個為 oracle 表欄位對應的 type , 需要什麼型態就宣告什麼。
- || : 此為字串串接用 符號。
- := : 賦予變數對應值用 。
DECLARE
v_age number(5);
BEGIN
v_age := 30;
DBMS_OUTPUT.put_line('你的年紀是' || v_age);
END;
範例 3 – 結合Oracle中的表應用
先建立一個表 名叫做 friuts
create table fruits
(
f_id varchar(10) not null,
s_id varchar(5) not null,
f_name varchar(10) not null,
f_price number(8,2) not null
);
匯入一些資料
insert into fruits (f_id, s_id, f_name, f_price) values ('a1', 101, '蘋果', '5.2');
insert into fruits (f_id, s_id, f_name, f_price) values ('a2', 102, '香蕉', '5.3');
insert into fruits (f_id, s_id, f_name, f_price) values ('a3', 103, '橘子', '5.4');
insert into fruits (f_id, s_id, f_name, f_price) values ('a4', 103, '西瓜', '5.5');
insert into fruits (f_id, s_id, f_name, f_price) values ('a5', 104, '椰子', '5.7');
insert into fruits (f_id, s_id, f_name, f_price) values ('a6', 105, '葡萄', '5.9');
commit;
查看看有沒有建立成功
select * from fruits
- v_ss_id : 宣告一個變數, 透過 table fruits 的值 利用 select into 匯入
- EXCEPTION : 假設發生錯誤程式會自動跳過來這邊
- NO_DATA_FOUND & TOO_MANY_ROWS : Exception oracle 特定 Exception名稱
DECLARE
v_ss_id number(6);
BEGIN
SELECT S_ID into v_ss_id from fruits where fruits.f_name = '蘋果';
DBMS_OUTPUT.put_line('蘋果代碼為: ' || v_ss_id );
EXCEPTION
WHEN NO_DATA_FOUND THEN
DBMS_OUTPUT.put_line('沒有找到對應代碼');
WHEN TOO_MANY_ROWS THEN
DBMS_OUTPUT.put_line('找到不只一筆');
END;
將蘋果 改成蘋果 1 則會跳到Exception
DECLARE
v_ss_id number(6);
BEGIN
SELECT S_ID into v_ss_id from fruits where fruits.f_name = '蘋果1';
DBMS_OUTPUT.put_line('蘋果代碼為: ' || v_ss_id );
EXCEPTION
WHEN NO_DATA_FOUND THEN
DBMS_OUTPUT.put_line('沒有找到對應代碼');
WHEN TOO_MANY_ROWS THEN
DBMS_OUTPUT.put_line('找到不只一筆');
END;