创建 SQL 表函数
可随时创建 SQL 表函数。
开始之前
创建 SQL 表函数之前,请确保您具有执行 CREATE FUNCTION(表)语句所需的特权。
限制
请参阅:SQL 函数限制过程
结果
CREATE FUNCTION (table) 语句应成功执行并且应创建表函数。
示例
- 示例 1
- 以下是用于记录和审计对职员薪水数据所做更新的 SQL 表函数的示例:
此函数会更新 updEmpNum 所指定职员的薪水(更新金额由 amount 指定),并且也会在审计表 audit_table 中记录调用例程的用户、所修改表的名称以及用户所作修改的类型。在 FROM 子句中引用数据更改语句的 SELECT 语句用来返回所更新的行值。CREATE FUNCTION update_salary (updEmpNum CHAR(4), amount INTEGER) RETURNS TABLE (emp_lastname VARCHAR(10), emp_firstname VARCHAR(10), newSalary INTEGER) LANGUAGE SQL MODIFIES SQL DATA NO EXTERNAL ACTION NOT DETERMINISTIC BEGIN ATOMIC INSERT INTO audit_table(user, table, action, time) VALUES (USER, 'EMPLOYEE', 'Salary update. Values: ' || updEmpNum || ' ' || char(amount), CURRENT_TIMESTAMP); RETURN (SELECT lastname, firstname, salary FROM FINAL TABLE(UPDATE employee SET salary = salary + amount WHERE employee.empnum = updEmpNum)); END - 示例 2
- 以下是 SQL 表函数的示例:
CREATE TABLE t1(pk INT, c1 INT, date DATE) CREATE TABLE t1_archive LIKE T1% CREATE FUNCTION archive_tbl_t1(ppk INT) RETURNS TABLE(pk INT, c1 INT, date DATE) LANGUAGE SQL MODIFIES SQL DATA BEGIN ATOMIC DECLARE c1 INT; DECLARE date DATE; SET (c1, date) = (SELECT c1, date FROM OLD TABLE(DELETE FROM t1 WHERE t1.pk = ppk)); INSERT INTO T1_ARCHIVE VALUES (ppk, c1, date); RETURN VALUES (ppk, c1, date); END%
下一步做什么
创建表函数后,您可能想要调用该函数以进行测试。