SQL 表関数の作成
SQL 表関数を作成するタスクは、いつでも実行できます。
始める前に
SQL 表関数を作成する前に、CREATE FUNCTION (表) ステートメントの実行に必要な特権があることを確認してください。
制約事項
SQL 関数に関する制約事項を参照してください。手順
タスクの結果
CREATE FUNCTION (表) ステートメントが正常に実行されると、表関数が作成されます。
例
- 例 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%
次のタスク
表関数を作成した後、関数を呼び出してテストすることができます。