來杭州學習半年多了!今天終於講到以前關注的ORACLE PL/SQL預存程序! 整理一下上課敲的代碼:
先瞭解要用到的知識
1.variable(變數
文法:
var_name var_type[CONSTANT][NOT NULL][:= value];
DECLARE
v_fname VARCHAR2(50);
為了保障變數與DB中TABLE 的Column資料類型的同一性,要用:
2.%TYPE
文法:
DECLARE
v_fname s_emp.FIRST_NAME%TYPE;
但如果聲明太多的話!可累人了,還好有:
3.RECORD
文法:
TYPE record_name IS RECORD(
field1 type1 [NOT NULL][:= expression1],
...
fieldN typeN [NOT NULL][:= expressionN]
);
DECLARE
TYPE s_TT IS RECORD(
s_id s_emp.ID%TYPE,
....
s_sal s_emp.SALARY%TYPE
)
--以上自訂了一個類型,下面用該類型作自訂變數的類型
s_temp s_TT;
一個表如果有很多欄位,那要敲... :(, ORACLE想的也挺多:
4.ROWTYPE
返回一個基於DB中表定義的類型(一行的所有欄位)
DECLARE
v_temp s_emp%ROWTYPE;
5.TABLE
與一個MAP<int,T>集合類似,用來儲存可用的資料
文法:
TYPE tabletype IS TABLE OF type INDEX BY BINARY_INTEGER;
DECLARE
TYPE t_temp IS TABLE OF s_emp%ROWTYPE INDEX BY BINARY INTEGER;
用t_temp作為類型來聲明一個變數
v_table t_temp;
BEGIN
SELECT *
INTO v_table(-2)
FROM s_emp
WHERE ID=1;
END;
-2是ID=1的記錄儲存在v_table中的索引位置,該索引的值不能超過BINARY INTEGER的取值範圍:正負2147483647.索引可以是這個範圍內的任意值