更新 row 类型表达式

从 SPL 例程内,您可使用 ROW 变量来更新 row 类型表达式。下图展示当员工的基本薪酬按某一百分比增长时,用于更新 emp_info 表的 SPL 过程 emp_raise

图: 用于更新 emp_info 表的 SPL 过程。

CREATE PROCEDURE emp_raise( name VARCHAR(30),
            pct DECIMAL(3,2) )
            
            DEFINE row_var salary_t;
            
            SELECT salary INTO row_var FROM emp_info 
            WHERE emp_name = name;
            
            LET row_var.base = row_var.base * pct;
            
            UPDATE emp_info SET salary = row_var
            WHERE emp_name = name;
            END PROCEDURE;

SELECT 语句将来自 emp_info 表的 salary 列的行选择到 ROW 变量 row_var 内。

emp_raise 过程使用 SPL 点符号表示法来直接地访问变量 row_varbase 字段。在此情况下,点符号表示法意味着 variable.fieldemp_raise 过程重新计算 row_var.base 的值作为 (row_var.base * pct)。然后,该过程以新的 row_var 值来更新 emp_info 表的 salary 列。
重要: 在可设置或引用 row 类型变量字段之前,必须将它初始化为行。您可以 SELECT INTO 语句或 LET 语句初始化 row 类型变量。