DB2存儲過程——變量賦值DECLARE聲明變量


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。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM