SQL 過程中的局部變量支持允許您在 SQL 過程邏輯的支持下指定和檢索值。
SQL 過程中的變量通過 DECLARE 語句定義。
可使用 SET 語句或 SELECT INTO 語句將值指定給變量,也可在聲明變量時將其指定為缺省值。可對變量指定字面值、表達式、查詢結果和專用寄存器值。
可將變量值指定給 SQL 過程參數或 SQL 過程中的其他變量,也可在例程內執行的 SQL 語句中將變量值作為參數引用。
CREATE PROCEDURE proc_vars() SPECIFIC proc_vars LANGUAGE SQL BEGIN DECLARE v_rcount INTEGER; DECLARE v_max DECIMAL (9,2); DECLARE v_adate, v_another DATE; DECLARE v_total INTEGER DEFAULT 0; -- (1) DECLARE v_rowsChanged BOOLEAN DEFAULT FALSE; -- (2) SET v_total = v_total + 1; -- (3) SELECT MAX(salary) -- (4) INTO v_max FROM employee; VALUES CURRENT_DATE INTO v_date; -- (5) SELECT CURRENT DATE, CURRENT DATE -- (6) INTO v_adate, v_another FROM SYSIBM.SYSDUMMY1; DELETE FROM T; GET DIAGNOSTICS v_rcount = ROW_COUNT; -- (7) IF v_rcount > 0 THEN -- (8) SET is_done = TRUE; END IF; END
聲明變量時,可按行 (1) 中所示使用 DEFAULT 子句指定缺省值。行 (2) 顯示布爾數據類型的變量的聲明,該變量的缺省值為 FALSE。行 (3) 顯示可用於指定單個變量值的 SET 語句。還可按行 (4) 中所示,通過將 SELECT 或 FETCH 語句與 INTO 子句配合執行來設置變量。行 (5) 和行 (6) 顯示如何使用 VALUES INTO 語句來對函數或專用寄存器求值以及如何將該值指定給一個變量或多個變量。
還可將 GET DIAGNOSTICS 語句的結果指定給變量。可使用 GET DIAGNOSTICS 控制受影響行數(UDPDATE 對應 UPDATE 語句,DELETE 對應 DELETE 語句)或獲取剛剛執行的 SQL 語句的返回狀態。行 (7) 顯示如何將剛才執行的 DELETE 語句修改的行數指定給變量。
行 (8) 演示如何使用邏輯塊來確定要指定給變量的值。在此情況下,如果在先前執行 DELETE 語句和 GET DIAGNOSTICS 語句(導致對變量 v_rcount 指定大於零的值)時行數發生了更改,那么會對變量 is_done is 指定值 TRUE。
