SELECT INTO、FETCH、整體指派 rec2 := rec1、傳遞給子程式。rec.field := value、布林運算、單欄位傳遞。DECLARE
TYPE detail_rec IS RECORD (
quote stock_quote_rec,
ts DATE,
bid_sz NUMBER,
ask_sz NUMBER
);
r_detail detail_rec;
BEGIN
r_detail.bid_sz := 1000;
r_detail.quote.volume := 156700; -- 多層記錄用點串聯
log_quote(r_detail.quote); -- 傳遞子記錄
END;
SELECT symbol, exchange INTO r_stock.symbol, r_stock.exchange FROM stocks WHERE symbol='ORCL'; SELECT * INTO r_stock2 FROM stocks WHERE symbol='ORCL'; -- 欄位順序對應
CURSOR c_stock(p_sym VARCHAR2) IS SELECT symbol, exchange, begin_date FROM stock WHERE symbol=UPPER(p_sym);
r_stock c_stock%ROWTYPE;
OPEN c_stock('ORCL');
FETCH c_stock INTO r_stock;
TYPE rec_a IS RECORD (a NUMBER, b VARCHAR2(10)); TYPE rec_b IS RECORD (a NUMBER, b VARCHAR2(10)); -- 雖結構相同但型別不同 r1 rec_a; r2 rec_a; r3 rec_b; r2 := r1; -- 正確 -- r3 := r1; -- 編譯錯誤:型別不符 r3.a := r1.a; r3.b := r1.b; -- 必須逐欄位指派
r_rec.field1 := val1; r_rec.field2 := val2; ...
INSERT INTO table VALUES (rec) 會報錯。IF rec1 > rec2 不支援。IF sort(rec1) > sort(rec2)ORDER 或 MAP 方法。考試常以 %ROWTYPE 變數直接用於 INSERT 或比較作為干擾項,請牢記:記錄型別不可直接用於 DML 與比較運算。